X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=Workspace%2FSiman%2Fsrc%2Forg%2Fsplat%2Fsimer%2FImportDocumentAction.java;h=ed307e2ce165b5d59030d58c0df6e3de9a8c0312;hb=92211fb733030a36267ccc496d9ed508a4f2b7fa;hp=faf4dfe9cf42146190b7c34253e4d36f6cb3652c;hpb=2eb6d18edf6e04fe696e0c35e287b83f15c9f060;p=tools%2Fsiman.git diff --git a/Workspace/Siman/src/org/splat/simer/ImportDocumentAction.java b/Workspace/Siman/src/org/splat/simer/ImportDocumentAction.java index faf4dfe..ed307e2 100644 --- a/Workspace/Siman/src/org/splat/simer/ImportDocumentAction.java +++ b/Workspace/Siman/src/org/splat/simer/ImportDocumentAction.java @@ -2,12 +2,10 @@ package org.splat.simer; import java.io.File; 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; @@ -16,14 +14,12 @@ 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.dal.bo.som.ValidationCycle; +import org.splat.dal.bo.som.ValidationStep; 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.service.technical.RepositoryService; import org.splat.som.Revision; import org.splat.som.Step; import org.splat.wapp.Constants; @@ -31,39 +27,29 @@ import org.splat.wapp.Constants; /** * Action for adding a document into a study step. */ -public class ImportDocumentAction extends UploadBaseNextAction { +public class ImportDocumentAction extends BaseUploadDocumentAction { /** * Serial version ID. */ private static final long serialVersionUID = 2587822564883588556L; - private transient List _documentTypes = null; - private long _documentType = 0; /** - * Reference extracted from the imported file, if exist. + * Sorted list of document types for the selected study step. */ - 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 = ""; + private transient List _documentTypes = null; /** - * Injected project settings service. + * Sorted list of document types for the selected study step. */ - private ProjectSettingsService _projectSettings; + private transient final List _reviewable = new ArrayList(); /** - * Injected publication service. + * The selected document type. */ - private PublicationService _publicationService; + private long _documentType = 0; /** - * Injected step service. + * Reference extracted from the imported file, if exist. */ - private StepService _stepService; + private String _reference = null; /** * Injected document service. */ @@ -72,14 +58,21 @@ public class ImportDocumentAction extends UploadBaseNextAction { * Injected document type service. */ private DocumentTypeService _documentTypeService; + /** - * Injected repository service. + * Update uses documents list if chosen new type of import document. + * @return SUCCESS */ - private RepositoryService _repositoryService; - - // ============================================================================================================================== - // Action methods - // ============================================================================================================================== + public final String updateUsesList() { + _mystudy = getOpenStudy(); + _defuses = new ArrayList(); + _deftype = getDocumentTypeService().selectType( + (int) _documentType); + if (_deftype != null) { + setupDefaultUses(_deftype); + } + return SUCCESS; + } /** * Initialize the operation. @@ -88,42 +81,32 @@ public class ImportDocumentAction extends UploadBaseNextAction { */ public String doInitialize() { - if (Constants.TRUE.equals(getWriteAccess())) { - setToolProperty(Constants.STUDY_MENU); - } else { - setToolProperty(Constants.NONE); - } - initializationFullScreenContext(Constants.STUDY_MENU, - Constants.STUDY_MENU, Constants.FALSE, getToolProperty(), - Constants.STUDY_MENU); - - User user = getConnectedUser(); - File updir = getRepositoryService().getDownloadDirectory(user); - File upfile = new File(updir.getPath() + "/" + filename); - String[] table = filename.split("\\x2E"); + File upfile = commonInitialize(Constants.FALSE); + String[] table = _fileName.split("\\x2E"); String filext = table[table.length - 1].toLowerCase(); - mystudy = getOpenStudy(); - Step step = mystudy.getSelectedStep(); + _mystudy = getOpenStudy(); + Step step = _mystudy.getSelectedStep(); _documentTypes = getStepService().getValidDocumentTypes(step); // Set the document type by default - deftype = getApplicationSettings().getDefaultDocumentType(step, filext); - if (deftype != null) { - setDefaultDocumentType(Long.toString(deftype.getIndex())); + _deftype = getApplicationSettings() + .getDefaultDocumentType(step, filext); + if (_deftype != null) { + setDefaultDocumentType(_deftype.getIndex()); } - defuses = new ArrayList(); - state = ProgressState.inWORK; + _defuses = new ArrayList(); + _state = ProgressState.inWORK; String res = ERROR; if (extractProperties(upfile, filext)) { - if (docname == null) { - docname = table[0]; + if (_docname == null) { + _docname = table[0]; for (int i = 1; i < table.length - 1; i++) { - docname = docname + "." + table[i]; + _docname = _docname + "." + table[i]; } } - if (deftype != null) { - setupDefaultUses(deftype); + if (_deftype != null) { + setupDefaultUses(_deftype); } DocumentType[] types = _documentTypes @@ -133,6 +116,16 @@ public class ImportDocumentAction extends UploadBaseNextAction { _documentTypes = Arrays.asList(types); res = SUCCESS; } + + // Initialize isReviewable: if a type has review state or not + ValidationCycle cycle; + boolean hasReview; + for (DocumentType dtype : _documentTypes) { + cycle = getStudyService().getValidationCycleOf( + _mystudy.getMystudy(), dtype); + hasReview = (cycle != null) && cycle.enables(ValidationStep.REVIEW); + _reviewable.add(hasReview); + } return res; } @@ -150,62 +143,48 @@ public class ImportDocumentAction extends UploadBaseNextAction { Reader tool = Toolbox.getReader(upfile); if (tool == null) { if ("pdf".equals(filext)) { - state = ProgressState.EXTERN; // TODO: Should external extensions be configurable ? + _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 i = _documentTypes.iterator(); i - .hasNext();) { - DocumentType type = i.next(); - if (type.getName().equals(filetype)) { - deftype = type; - _documentType = type.getIndex(); // Disables the document type field - break; - } - } - if (fileref != null) { - isOk = findTypeByDocRef(fileref); - } - 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; - } - } - 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; - } - } - } - } + // 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 i = _documentTypes.iterator(); i + // .hasNext();) { + // DocumentType type = i.next(); + // if (type.getName().equals(filetype)) { + // _deftype = type; + // _documentType = type.getIndex(); // Disables the document type field + // break; + // } + // } + // if (fileref != null) { + // isOk = findTypeByDocRef(fileref); + // } + // 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; + // } + // setVersion(version.toString()); + // } catch (ParseException e) { + // setErrorCode("message.error.format.version"); + // isOk = false; + // } + // } + // if (isOk) { + // _docname = tool.extractProperty("title"); // Property kept even if the file is not referenced + // isOk = extractDate(tool); + // } + // } } return isOk; } @@ -227,8 +206,8 @@ public class ImportDocumentAction extends UploadBaseNextAction { } 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 + _deftype = slot.getType(); // Just in case + _documentType = _deftype.getIndex(); // Disables the document type field } else { setError("message.error.reference.duplicate"); isOk = false; @@ -237,100 +216,92 @@ public class ImportDocumentAction extends UploadBaseNextAction { return isOk; } - /** - * Set error message and menus. - * - * @param errorCode - * error message key - */ - private void setError(final String errorCode) { - setErrorCode(errorCode); - - initializationFullScreenContext(Constants.STUDY_MENU, - Constants.STUDY_MENU, Constants.FALSE, Constants.NONE, - Constants.STUDY_MENU); - } - /** * Perform import of a document. * * @return SUCCESS if ok, "cancel" - if canceled, ERROR - if error */ public String doImport() { + String res = ERROR; initializationScreenContext(Constants.STUDY_MENU, Constants.STUDY_MENU, Constants.TRUE); - if (action == ToDo.cancel) { - return "cancel"; - } if (_documentType == 0) { setErrorCode("message.error.import.type"); initializationFullScreenContext(Constants.STUDY_MENU, Constants.STUDY_MENU, Constants.TRUE, Constants.NONE, Constants.STUDY_MENU); + } else { + try { + // Getting user inputs + _mystudy = getOpenStudy(); + _mystudy.updateCurrentStep(); //update current step + User user = getConnectedUser(); + Step step = _mystudy.getSelectedStep(); + Date aDate = null; + if (getDocumentDate().length() > 0) { + ResourceBundle locale = ResourceBundle.getBundle("som", + getApplicationSettings().getCurrentLocale()); + SimpleDateFormat get = new SimpleDateFormat(locale + .getString("date.format"), getApplicationSettings() + .getCurrentLocale()); + aDate = get.parse(getDocumentDate()); + } + // Creation of uses relations + List uses = new ArrayList(); + if (_docuses != null) { + String[] list = _docuses.split(","); + for (int i = 0; i < list.length; i++) { + 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, getVersion(), aDate, uses); - return ERROR; - } - try { - // Getting user inputs - mystudy = getOpenStudy(); - User user = getConnectedUser(); - Step step = mystudy.getSelectedStep(); - 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 uses = new ArrayList(); - if (docuses != null) { - String[] list = docuses.split(","); - for (int i = 0; i < list.length; i++) { - uses.add(Long.valueOf(list[i].trim())); + if (_reference.length() > 0) { // Importation of a not foreign document + _mystudy.updateSimulationContexts(); // In case of simulation contexts extracted from the imported document } - } - if (LOG.isDebugEnabled()) { - LOG - .debug("Document to be imported uses documents with following ids:"); - for (Long usesId : uses) { - LOG.debug("#" + usesId); + + // Creation of derived the document formats + // Document ndoc = addoc.value(); + // Converter send = getApplicationSettings().getConverter(ndoc.getType(), ndoc.getFormat()); + // + // if (send != null) send.converts(addoc); // Asynchronous process + + if (uses.isEmpty()) { + _mystudy.add(addoc); // Updates the presentation + } else { + // Re-opening (refreshing) the currently open study + refreshStudy(); } + res = SUCCESS; + } catch (FileNotFoundException error) { + LOG.error("Reason:", error); + setErrorCode("message.error.import.file"); + } catch (Exception error) { + LOG.error("Reason:", error); + setErrorCode("message.error.internal"); } - 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 + if (!SUCCESS.equals(res)) { + initializationFullScreenContext(Constants.STUDY_MENU, + Constants.STUDY_MENU, Constants.TRUE, Constants.NONE, + Constants.STUDY_MENU); } - - // Creation of derived the document formats - // Document ndoc = addoc.value(); - // Converter send = getApplicationSettings().getConverter(ndoc.getType(), ndoc.getFormat()); - // - // if (send != null) send.converts(addoc); // Asynchronous process - - mystudy.add(addoc); // Updates the presentation - return SUCCESS; - } catch (FileNotFoundException error) { - LOG.error("Reason:", error); - setErrorCode("message.error.import.file"); - } catch (Exception error) { - LOG.error("Reason:", error); - setErrorCode("message.error.internal"); } - initializationFullScreenContext(Constants.STUDY_MENU, - Constants.STUDY_MENU, Constants.TRUE, Constants.NONE, - Constants.STUDY_MENU); - - return ERROR; + return res; } // ============================================================================================================================== @@ -338,14 +309,10 @@ public class ImportDocumentAction extends UploadBaseNextAction { // ============================================================================================================================== /** - * Date extracted from the imported file, if exist. + * Get sorted list of document types valid for the selected study step. * - * @return the file date + * @return sorted list of document types */ - public String getDocumentDate() { - return _documentDate; - } - public List getDocumentTypes() { return _documentTypes; } @@ -368,25 +335,6 @@ public class ImportDocumentAction extends UploadBaseNextAction { return _reference; } - /** - * Get version number extracted from the imported file, if exist. - * - * @return the document version - */ - public String getVersion() { - return _version; - } - - /** - * Set date extracted from the imported file. - * - * @param date - * the date to set - */ - public void setDocumentDate(final String date) { - this._documentDate = date; - } - /** * Set document name entered by the user if enabled. * @@ -394,12 +342,18 @@ public class ImportDocumentAction extends UploadBaseNextAction { * the document name */ public void setDocumentName(final String name) { - this.docname = name; // Name entered by the user if enabled + this._docname = name; // Name entered by the user if enabled } + /** + * Set the default title if no title was defined. + * + * @param name + * the default document title + */ public void setDocumentTitle(final String name) { // Called even if DocumentName is enabled - if (this.docname == null) { - this.docname = name; + if (this._docname == null) { + this._docname = name; } } @@ -409,19 +363,31 @@ public class ImportDocumentAction extends UploadBaseNextAction { * @param value * the id as string */ - public void setDocumentType(final String value) { - this._documentType = Integer.valueOf(value); + public void setDocumentType(final Long value) { + this._documentType = value; } + /** + * Set the default state if no state was selected. + * + * @param state + * the default state + */ public void setDefaultDocumentState(final String state) { // Called even if DocumentState is enabled - if (this.state == null) { - this.state = ProgressState.valueOf(state); + if (this._state == null) { + this._state = ProgressState.valueOf(state); } } - public void setDefaultDocumentType(final String value) { // Called even if DocumentType is enabled + /** + * Set the default type if no type was selected. + * + * @param value + * the default document type id + */ + public void setDefaultDocumentType(final Long value) { // Called even if DocumentType is enabled if (this._documentType == 0) { - this._documentType = Integer.valueOf(value); + this._documentType = value; } } @@ -435,75 +401,6 @@ public class ImportDocumentAction extends UploadBaseNextAction { this._reference = value; } - /** - * Set version number extracted from the imported file, if exist. - * - * @param value - * the version - */ - public void setVersion(final String value) { - this._version = value; - } - - /** - * Get project settings. - * - * @return Project settings service - */ - private ProjectSettingsService getProjectSettings() { - return _projectSettings; - } - - /** - * Set project settings service. - * - * @param projectSettingsService - * project settings service - */ - public void setProjectSettings( - final ProjectSettingsService projectSettingsService) { - _projectSettings = projectSettingsService; - } - - /** - * Get the publicationService. - * - * @return the publicationService - */ - public PublicationService getPublicationService() { - return _publicationService; - } - - /** - * Set the publicationService. - * - * @param publicationService - * the publicationService to set - */ - public void setPublicationService( - final PublicationService publicationService) { - _publicationService = publicationService; - } - - /** - * Get the stepService. - * - * @return the stepService - */ - public StepService getStepService() { - return _stepService; - } - - /** - * Set the stepService. - * - * @param stepService - * the stepService to set - */ - public void setStepService(final StepService stepService) { - _stepService = stepService; - } - /** * Get the documentService. * @@ -523,25 +420,6 @@ public class ImportDocumentAction extends UploadBaseNextAction { _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. * @@ -561,4 +439,26 @@ public class ImportDocumentAction extends UploadBaseNextAction { final DocumentTypeService documentTypeService) { _documentTypeService = documentTypeService; } -} \ No newline at end of file + + /** + * Get sorted list of available document states. + * + * @return the documentStates + */ + public List getDocumentStates() { + List states = new ArrayList(); + states.add(ProgressState.inWORK); + states.add(ProgressState.inDRAFT); + states.add(ProgressState.EXTERN); + return states; + } + + /** + * Get the isReviewable. + * + * @return the isReviewable + */ + public List getReviewable() { + return _reviewable; + } +}