import java.io.FileNotFoundException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.ResourceBundle;
-import java.util.Vector;
-import org.hibernate.HibernateException;
-import org.hibernate.Session;
-import org.hibernate.Transaction;
import org.splat.dal.bo.kernel.User;
-import org.splat.manox.Reader;
-import org.splat.manox.Toolbox;
-import org.splat.dal.dao.som.Database;
import org.splat.dal.bo.som.Document;
+import org.splat.dal.bo.som.DocumentType;
import org.splat.dal.bo.som.ProgressState;
+import org.splat.dal.bo.som.Publication;
+import org.splat.manox.Reader;
+import org.splat.manox.Toolbox;
+import org.splat.service.DocumentService;
+import org.splat.service.DocumentTypeService;
import org.splat.service.PublicationService;
import org.splat.service.StepService;
import org.splat.service.technical.ProjectSettingsService;
-import org.splat.dal.bo.som.Publication;
-import org.splat.dal.bo.som.DocumentType;
+import org.splat.service.technical.RepositoryService;
import org.splat.som.Revision;
import org.splat.som.Step;
+import org.splat.wapp.Constants;
+/**
+ * Action for adding a document into a study step.
+ */
public class ImportDocumentAction extends UploadBaseNextAction {
- private List<DocumentType> doctypes = null;
- private long doctype = 0;
- private String docref = null; // Reference extracted from the imported file, if exist
- private String docver = ""; // Version number extracted from the imported file, if exist
- private String date = ""; // Date extracted from the imported file, if exist
- private ProjectSettingsService _projectSettingsService;
+ /**
+ * Serial version ID.
+ */
+ private static final long serialVersionUID = 2587822564883588556L;
+
+ private transient List<DocumentType> _documentTypes = null;
+ private long _documentType = 0;
+ /**
+ * Reference extracted from the imported file, if exist.
+ */
+ private String _reference = null;
+ /**
+ * Version number extracted from the imported file, if exist.
+ */
+ private String _version = "";
+ /**
+ * Date extracted from the imported file, if exist.
+ */
+ private String _documentDate = "";
+ /**
+ * Injected project settings service.
+ */
+ private ProjectSettingsService _projectSettings;
+ /**
+ * Injected publication service.
+ */
private PublicationService _publicationService;
+ /**
+ * Injected step service.
+ */
private StepService _stepService;
+ /**
+ * Injected document service.
+ */
+ private DocumentService _documentService;
+ /**
+ * Injected document type service.
+ */
+ private DocumentTypeService _documentTypeService;
+ /**
+ * Injected repository service.
+ */
+ private RepositoryService _repositoryService;
+ /**
+ * Value of the menu property. It can be: none, create, open, study, knowledge, sysadmin, help.
+ */
+ private String _menuProperty;
- private static final long serialVersionUID = 2587822564883588556L;
+ /**
+ * Value of the title bar property. It can be: study, knowledge.
+ */
+ private String _titleProperty;
+
+ /**
+ * Value of the tool bar property. It can be: none, standard, study, back.
+ */
+ private String _toolProperty;
+
+ /**
+ * Value of the left menu property. It can be: open, study, knowledge, scenario.
+ */
+ private String _leftMenuProperty;
+
+ /**
+ * Property that indicates whether the current open study is editable or not. On the screen it looks like pen on the status icon, pop-up
+ * menu also can be called. It is necessary for correct building the title bar.
+ */
+ private String _editDisabledProperty = "false";
// ==============================================================================================================================
// Action methods
// ==============================================================================================================================
+ /**
+ * Initialize the operation.
+ *
+ * @return SUCCESS in success, otherwise - ERROR
+ */
public String doInitialize() {
- // -----------------------------
- Session connex = Database.getSession();
- Transaction transax = connex.beginTransaction();
+
+ setMenuProperty(Constants.STUDY_MENU);
+ setTitleProperty(Constants.STUDY_MENU);
+ setEditDisabledProperty("true");
+ if ("true".equals(getWriteAccess())) {
+ setToolProperty(Constants.STUDY_MENU);
+ } else {
+ setToolProperty(Constants.NONE);
+ }
+ setLeftMenuProperty(Constants.STUDY_MENU);
+ initializationFullScreenContext(_menuProperty, _titleProperty,
+ _editDisabledProperty, _toolProperty, _leftMenuProperty);
+
User user = getConnectedUser();
- File updir = Database.getDownloadDirectory(user);
+ File updir = getRepositoryService().getDownloadDirectory(user);
File upfile = new File(updir.getPath() + "/" + filename);
String[] table = filename.split("\\x2E");
String filext = table[table.length - 1].toLowerCase();
mystudy = getOpenStudy();
Step step = mystudy.getSelectedStep();
- doctypes = step.getValidDocumentTypes();
- deftype = ApplicationSettings.getDefaultDocumentType(step, filext);
- defuses = new Vector<Document>();
+ _documentTypes = getStepService().getValidDocumentTypes(step);
+ deftype = getApplicationSettings().getDefaultDocumentType(step, filext);
+ defuses = new ArrayList<Document>();
state = ProgressState.inWORK;
+ String res = ERROR;
+ if (extractProperties(upfile, filext)) {
+ if (docname == null) {
+ docname = table[0];
+ for (int i = 1; i < table.length - 1; i++) {
+ docname = docname + "." + table[i];
+ }
+ }
+ if (deftype != null) {
+ setupDefaultUses(deftype);
+ }
+
+ DocumentType[] types = _documentTypes
+ .toArray(new DocumentType[_documentTypes.size()]);
+ DocumentTypeComparator compare = new DocumentTypeComparator();
+ Arrays.sort(types, compare);
+ _documentTypes = Arrays.asList(types);
+ res = SUCCESS;
+ }
+ return res;
+ }
+
+ /**
+ * Extract properties from the uploaded file.
+ *
+ * @param upfile
+ * the file to parse
+ * @param filext
+ * the file extension
+ * @return true if succeeded, false if error
+ */
+ private boolean extractProperties(final File upfile, final String filext) {
+ boolean isOk = true;
Reader tool = Toolbox.getReader(upfile);
- if (tool != null) {
+ if (tool == null) {
+ if ("pdf".equals(filext)) {
+ state = ProgressState.EXTERN; // TODO: Should external extensions be configurable ?
+ }
+ } else {
String fileref = tool.extractProperty("reference");
String filever = tool.extractProperty("version"); // Property kept even if the file is not referenced
String filetype = tool.extractProperty("type"); // Property kept even if the file is not referenced
- for (Iterator<DocumentType> i = doctypes.iterator(); i.hasNext();) {
+ for (Iterator<DocumentType> i = _documentTypes.iterator(); i
+ .hasNext();) {
DocumentType type = i.next();
- if (!type.getName().equals(filetype))
- continue;
- deftype = type;
- doctype = type.getIndex(); // Disables the document type field
- break;
+ if (type.getName().equals(filetype)) {
+ deftype = type;
+ _documentType = type.getIndex(); // Disables the document type field
+ break;
+ }
}
if (fileref != null) {
- Document slot = Database.selectDocument(fileref,
- new Revision().toString());
- if (slot == null) {
- setErrorCode("reference.undefined");
- return ERROR;
- } else {
- if (!slot.isUndefined()) {
- setErrorCode("reference.duplicate");
- return ERROR;
- }
- docref = fileref; // Disables document name and state fields
- deftype = slot.getType(); // Just in case
- doctype = deftype.getIndex(); // Disables the document type field
- }
+ isOk = findTypeByDocRef(fileref);
}
- if (filever != null)
- try {
- Revision.Format get = new Revision.Format(
- getProjectSettings().getRevisionPattern());
- Revision version = get.parse(filever);
- if (version.isNull())
- throw new ParseException(filever, filever.length() - 1);
- if (!version.isMinor())
- state = ProgressState.inCHECK;
- docver = version.toString();
- } catch (ParseException e) {
- setErrorCode("format.version");
- return ERROR;
+ if (isOk) {
+ if (filever != null) {
+ try {
+ Revision.Format get = new Revision.Format(
+ getProjectSettings().getRevisionPattern());
+ Revision version = get.parse(filever);
+ if (version.isNull()) {
+ throw new ParseException(filever,
+ filever.length() - 1);
+ }
+ if (!version.isMinor()) {
+ state = ProgressState.inCHECK;
+ }
+ _version = version.toString();
+ } catch (ParseException e) {
+ setError("message.error.format.version");
+ isOk = false;
+ }
}
- docname = tool.extractProperty("title"); // Property kept even if the file is not referenced
- date = tool.extractProperty("date");
- if (date != null) {
- ResourceBundle locale = ResourceBundle.getBundle("som",
- ApplicationSettings.getCurrentLocale());
- SimpleDateFormat check = new SimpleDateFormat(
- locale.getString("date.format"));
- try {
- check.parse(date);
- } catch (ParseException e) {
- setErrorCode("format.date");
- return ERROR;
+ if (isOk) {
+ docname = tool.extractProperty("title"); // Property kept even if the file is not referenced
+ _documentDate = tool.extractProperty("date");
+ if (_documentDate == null) {
+ _documentDate = "";
+ } else {
+ ResourceBundle locale = ResourceBundle.getBundle("som",
+ getApplicationSettings().getCurrentLocale());
+ SimpleDateFormat check = new SimpleDateFormat(locale
+ .getString("date.format"));
+ try {
+ check.parse(_documentDate);
+ } catch (ParseException e) {
+ setError("message.error.format.date");
+ isOk = false;
+ }
+ }
}
- } else
- date = "";
- } else if (filext.equals("pdf"))
- state = ProgressState.EXTERN; // TODO: Should external extensions be configurable ?
- if (docname == null) {
- docname = table[0];
- for (int i = 1; i < table.length - 1; i++)
- docname = docname + "." + table[i];
+ }
}
- if (deftype != null)
- setupDefaultUses(deftype);
+ return isOk;
+ }
- DocumentType[] types = doctypes.toArray(new DocumentType[doctypes
- .size()]);
- DocumentTypeComparator compare = new DocumentTypeComparator();
- Arrays.sort(types, compare);
- doctypes = Arrays.asList(types);
+ /**
+ * Find document type by document reference.
+ *
+ * @param fileref
+ * the document reference
+ * @return true if succeeded, false if error
+ */
+ private boolean findTypeByDocRef(final String fileref) {
+ boolean isOk = true;
+ Document slot = getDocumentService().selectDocument(fileref,
+ new Revision().toString());
+ if (slot == null) {
+ setError("message.error.reference.undefined");
+ isOk = false;
+ } else {
+ if (slot.isUndefined()) {
+ _reference = fileref; // Disables document name and state fields
+ deftype = slot.getType(); // Just in case
+ _documentType = deftype.getIndex(); // Disables the document type field
+ } else {
+ setError("message.error.reference.duplicate");
+ isOk = false;
+ }
+ }
+ return isOk;
+ }
- transax.commit();
- return SUCCESS;
+ /**
+ * Set error message and menus.
+ *
+ * @param errorCode
+ * error message key
+ */
+ private void setError(final String errorCode) {
+ setErrorCode(errorCode);
+
+ setToolProperty(Constants.NONE);
+ initializationFullScreenContext(_menuProperty, _titleProperty,
+ _editDisabledProperty, _toolProperty, _leftMenuProperty);
}
+ /**
+ * Perform import of a document.
+ *
+ * @return SUCCESS if ok, "cancel" - if canceled, ERROR - if error
+ */
public String doImport() {
- // -------------------------
- if (action == ToDo.cancel)
+
+ setMenuProperty(Constants.STUDY_MENU);
+ setTitleProperty(Constants.STUDY_MENU);
+ setEditDisabledProperty("true");
+ initializationScreenContext(_menuProperty, _titleProperty,
+ _editDisabledProperty);
+
+ if (action == ToDo.cancel) {
return "cancel";
- if (doctype == 0) {
- setErrorCode("import.type");
+ }
+ if (_documentType == 0) {
+ setErrorCode("message.error.import.type");
+
+ setToolProperty(Constants.NONE);
+ setLeftMenuProperty(Constants.STUDY_MENU);
+ initializationFullScreenContext(_menuProperty, _titleProperty,
+ _editDisabledProperty, _toolProperty, _leftMenuProperty);
+
return ERROR;
}
- Session connex = Database.getSession();
- Transaction transax = connex.beginTransaction();
try {
// Getting user inputs
mystudy = getOpenStudy();
User user = getConnectedUser();
Step step = mystudy.getSelectedStep();
- DocumentType type = Document.selectType((int)doctype);
- File updir = Database.getDownloadDirectory(user);
- File upfile = new File(updir.getPath() + "/" + filename);
- String[] table = filename.split("\\x2E");
-
- // Creation of the document
- Document.Properties dprop = new Document.Properties();
- Publication addoc;
-
- if (docref.length() == 0) { // Importation of a foreign document
- // TODO: Extract property of supported documents (DOCX, ODT...)
- addoc = getStepService().createDocument(step, dprop.setName(docname)
- .setType(type).setFormat(table[table.length - 1])
- .setAuthor(user));
- updir = addoc.getSourceFile().asFile();
- if (logger.isInfoEnabled())
- logger.info("Moving \"" + upfile.getName() + "\" to \""
- + updir.getPath() + "\".");
- upfile.renameTo(updir);
- try {
- getPublicationService().saveAs(addoc, state); // May throw FileNotFound if rename was not done
- } catch (FileNotFoundException saverror) {
- Thread.sleep(1000);
- logger.info("Waiting for the file.");
- upfile.renameTo(updir);
- getPublicationService().saveAs(addoc, state); // Forget it if throw again FileNotFound
- }
- } else { // Importation of a previously created template-based document
- if (date.length() > 0) {
- ResourceBundle locale = ResourceBundle.getBundle("som",
- ApplicationSettings.getCurrentLocale());
- SimpleDateFormat get = new SimpleDateFormat(
- locale.getString("date.format"));
- dprop.setDate(get.parse(date));
- }
- addoc = getStepService().assignDocument(step, dprop.setReference(docref).setName(
- docname));
- updir = addoc.getSourceFile().asFile();
- if (logger.isInfoEnabled())
- logger.info("Moving \"" + upfile.getName() + "\" to \""
- + updir.getPath() + "\".");
- upfile.renameTo(updir);
- try {
- if (docver.length() > 0)
- getPublicationService().saveAs(addoc,
- new Revision(docver));
- else
- getPublicationService().saveAs(addoc, state);
- } catch (FileNotFoundException saverror) {
- Thread.sleep(1000);
- logger.info("Waiting for the file.");
- upfile.renameTo(updir);
- if (docver.length() > 0)
- getPublicationService().saveAs(addoc,
- new Revision(docver));
- else
- getPublicationService().saveAs(addoc, state);
- }
- mystudy.updateSimulationContexts(); // In case of simulation contexts extracted from the imported document
+ Date docdate = null;
+ if (_documentDate.length() > 0) {
+ ResourceBundle locale = ResourceBundle.getBundle("som",
+ getApplicationSettings().getCurrentLocale());
+ SimpleDateFormat get = new SimpleDateFormat(locale
+ .getString("date.format"));
+ docdate = get.parse(_documentDate);
}
// Creation of uses relations
+ List<Long> uses = new ArrayList<Long>();
if (docuses != null) {
String[] list = docuses.split(",");
for (int i = 0; i < list.length; i++) {
- Integer index = Integer.valueOf(list[i].trim());
- Publication used = getPublication(index);
- addoc.addDependency(used);
+ uses.add(Long.valueOf(list[i].trim()));
+ }
+ }
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Document to be imported uses documents with following ids:");
+ for (Long usesId: uses) {
+ LOG.debug("#" + usesId);
}
}
+ Publication addoc = getPublicationService().createDoc(
+ mystudy.getIndex(), step, _documentType, user.getIndex(),
+ filename, docname, state, _reference, _version, docdate,
+ uses);
+
+ if (_reference.length() > 0) { // Importation of a not foreign document
+ mystudy.updateSimulationContexts(); // In case of simulation contexts extracted from the imported document
+ }
+
// Creation of derived the document formats
// Document ndoc = addoc.value();
- // Converter send = ApplicationSettings.getConverter(ndoc.getType(), ndoc.getFormat());
+ // Converter send = getApplicationSettings().getConverter(ndoc.getType(), ndoc.getFormat());
//
// if (send != null) send.converts(addoc); // Asynchronous process
- transax.commit();
mystudy.add(addoc); // Updates the presentation
return SUCCESS;
} catch (FileNotFoundException error) {
- logger.error("Reason:", error);
- setErrorCode("import.file");
+ LOG.error("Reason:", error);
+ setErrorCode("message.error.import.file");
} catch (Exception error) {
- logger.error("Reason:", error);
- setErrorCode("internal");
- }
- if (transax != null && transax.isActive()) { // Probably useless test
- // Second try-catch as the rollback could fail as well
- try {
- transax.rollback();
- } catch (HibernateException backerror) {
- logger.debug("Error rolling back transaction", backerror);
- }
+ LOG.error("Reason:", error);
+ setErrorCode("message.error.internal");
}
+
+ setToolProperty(Constants.NONE);
+ setLeftMenuProperty(Constants.STUDY_MENU);
+ initializationFullScreenContext(_menuProperty, _titleProperty,
+ _editDisabledProperty, _toolProperty, _leftMenuProperty);
+
return ERROR;
}
// Getters and setters
// ==============================================================================================================================
+ /**
+ * Date extracted from the imported file, if exist.
+ *
+ * @return the file date
+ */
public String getDocumentDate() {
- // --------------------------------
- return date;
+ return _documentDate;
}
public List<DocumentType> getDocumentTypes() {
- // ---------------------------------------------
- return doctypes;
+ return _documentTypes;
}
+ /**
+ * Get document type id.
+ *
+ * @return document type id
+ */
public long getDocumentType() {
- // -----------------------------
- return doctype;
+ return _documentType;
}
+ /**
+ * Get reference extracted from the imported file, if exist.
+ *
+ * @return the document reference
+ */
public String getReference() {
- // -----------------------------
- return docref;
+ return _reference;
}
+ /**
+ * Get version number extracted from the imported file, if exist.
+ *
+ * @return the document version
+ */
public String getVersion() {
- // ---------------------------
- return docver;
+ return _version;
}
- public void setDocumentDate(String date) {
- // -----------------------------------------
- this.date = date;
+ /**
+ * Set date extracted from the imported file.
+ *
+ * @param date
+ * the date to set
+ */
+ public void setDocumentDate(final String date) {
+ this._documentDate = date;
}
- public void setDocumentName(String name) {
- // -----------------------------------------
+ /**
+ * Set document name entered by the user if enabled.
+ *
+ * @param name
+ * the document name
+ */
+ public void setDocumentName(final String name) {
this.docname = name; // Name entered by the user if enabled
}
- public void setDocumentTitle(String name) { // Called even if DocumentName is enabled
- // -----------------------------------------
- if (this.docname == null)
+ public void setDocumentTitle(final String name) { // Called even if DocumentName is enabled
+ if (this.docname == null) {
this.docname = name;
+ }
}
- public void setDocumentType(String value) {
- // ------------------------------------------
- this.doctype = Integer.valueOf(value);
+ /**
+ * Set document type id.
+ *
+ * @param value
+ * the id as string
+ */
+ public void setDocumentType(final String value) {
+ this._documentType = Integer.valueOf(value);
}
- public void setDefaultDocumentState(String state) { // Called even if DocumentState is enabled
- // --------------------------------------------------
- if (this.state == null)
+ public void setDefaultDocumentState(final String state) { // Called even if DocumentState is enabled
+ if (this.state == null) {
this.state = ProgressState.valueOf(state);
+ }
}
- public void setDefaultDocumentType(String value) { // Called even if DocumentType is enabled
- // --------------------------------------------------
- if (this.doctype == 0)
- this.doctype = Integer.valueOf(value);
+ public void setDefaultDocumentType(final String value) { // Called even if DocumentType is enabled
+ if (this._documentType == 0) {
+ this._documentType = Integer.valueOf(value);
+ }
}
- public void setReference(String value) {
- // ---------------------------------------
- this.docref = value;
+ /**
+ * Set document reference extracted from the imported file, if exist.
+ *
+ * @param value
+ * the reference
+ */
+ public void setReference(final String value) {
+ this._reference = value;
}
- public void setVersion(String value) {
- // -------------------------------------
- this.docver = value;
+ /**
+ * Set version number extracted from the imported file, if exist.
+ *
+ * @param value
+ * the version
+ */
+ public void setVersion(final String value) {
+ this._version = value;
}
/**
* @return Project settings service
*/
private ProjectSettingsService getProjectSettings() {
- return _projectSettingsService;
+ return _projectSettings;
}
/**
* @param projectSettingsService
* project settings service
*/
- public void setProjectSettings(ProjectSettingsService projectSettingsService) {
- _projectSettingsService = projectSettingsService;
+ public void setProjectSettings(
+ final ProjectSettingsService projectSettingsService) {
+ _projectSettings = projectSettingsService;
}
/**
* @param publicationService
* the publicationService to set
*/
- public void setPublicationService(PublicationService publicationService) {
+ public void setPublicationService(
+ final PublicationService publicationService) {
_publicationService = publicationService;
}
/**
* Get the stepService.
+ *
* @return the stepService
*/
public StepService getStepService() {
/**
* Set the stepService.
- * @param stepService the stepService to set
+ *
+ * @param stepService
+ * the stepService to set
*/
- public void setStepService(StepService stepService) {
+ public void setStepService(final StepService stepService) {
_stepService = stepService;
}
+
+ /**
+ * Get the documentService.
+ *
+ * @return the documentService
+ */
+ public DocumentService getDocumentService() {
+ return _documentService;
+ }
+
+ /**
+ * Set the documentService.
+ *
+ * @param documentService
+ * the documentService to set
+ */
+ public void setDocumentService(final DocumentService documentService) {
+ _documentService = documentService;
+ }
+
+ /**
+ * Get the repositoryService.
+ *
+ * @return the repositoryService
+ */
+ public RepositoryService getRepositoryService() {
+ return _repositoryService;
+ }
+
+ /**
+ * Set the repositoryService.
+ *
+ * @param repositoryService
+ * the repositoryService to set
+ */
+ public void setRepositoryService(final RepositoryService repositoryService) {
+ _repositoryService = repositoryService;
+ }
+
+ /**
+ * Get the documentTypeService.
+ *
+ * @return the documentTypeService
+ */
+ public DocumentTypeService getDocumentTypeService() {
+ return _documentTypeService;
+ }
+
+ /**
+ * Set the documentTypeService.
+ *
+ * @param documentTypeService
+ * the documentTypeService to set
+ */
+ public void setDocumentTypeService(
+ final DocumentTypeService documentTypeService) {
+ _documentTypeService = documentTypeService;
+ }
+
+ /**
+ * Get the menuProperty.
+ *
+ * @return the menuProperty
+ */
+ public String getMenuProperty() {
+ return _menuProperty;
+ }
+
+ /**
+ * Set the menuProperty.
+ *
+ * @param menuProperty
+ * the menuProperty to set
+ */
+ public void setMenuProperty(final String menuProperty) {
+ this._menuProperty = menuProperty;
+ }
+
+ /**
+ * Get the _titleProperty.
+ *
+ * @return the _titleProperty
+ */
+ public String getTitleProperty() {
+ return _titleProperty;
+ }
+
+ /**
+ * Set the titleProperty.
+ *
+ * @param titleProperty
+ * the titleProperty to set
+ */
+ public void setTitleProperty(final String titleProperty) {
+ _titleProperty = titleProperty;
+ }
+
+ /**
+ * Get the editDisabledProperty.
+ *
+ * @return the editDisabledProperty
+ */
+ public final String getEditDisabledProperty() {
+ return _editDisabledProperty;
+ }
+
+ /**
+ * Set the editDisabledProperty.
+ *
+ * @param editDisabledProperty
+ * the editDisabledProperty to set
+ */
+ public final void setEditDisabledProperty(final String editDisabledProperty) {
+ _editDisabledProperty = editDisabledProperty;
+ }
+
+ /**
+ * Get the toolProperty.
+ *
+ * @return the toolProperty
+ */
+ public String getToolProperty() {
+ return _toolProperty;
+ }
+
+ /**
+ * Set the toolProperty.
+ *
+ * @param toolProperty
+ * the toolProperty to set
+ */
+ public void setToolProperty(final String toolProperty) {
+ _toolProperty = toolProperty;
+ }
+
+ /**
+ * Get the leftMenuProperty.
+ *
+ * @return the leftMenuProperty
+ */
+ public String getLeftMenuProperty() {
+ return _leftMenuProperty;
+ }
+
+ /**
+ * Set the leftMenuProperty.
+ *
+ * @param leftMenuProperty
+ * the leftMenuProperty to set
+ */
+ public void setLeftMenuProperty(final String leftMenuProperty) {
+ _leftMenuProperty = leftMenuProperty;
+ }
}
\ No newline at end of file