import java.io.FileNotFoundException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.ResourceBundle;
-import java.util.Vector;
-import org.splat.kernel.InvalidPropertyException;
import org.splat.dal.bo.kernel.Relation;
import org.splat.dal.bo.kernel.User;
-import org.splat.manox.Reader;
-import org.splat.manox.Toolbox;
import org.splat.dal.bo.som.Document;
import org.splat.dal.bo.som.ProgressState;
+import org.splat.dal.bo.som.Publication;
+import org.splat.dal.bo.som.UsedByRelation;
+import org.splat.dal.bo.som.UsesRelation;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.manox.Reader;
+import org.splat.manox.Toolbox;
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.dal.bo.som.Publication;
import org.splat.som.Revision;
import org.splat.som.Step;
-import org.splat.dal.bo.som.UsedByRelation;
-import org.splat.dal.bo.som.UsesRelation;
+import org.splat.wapp.Constants;
/**
* Action for creating a new version of a document.
/**
* Versioned document index.
*/
- private String index = null;
+ private String _index = null;
/**
* List of publications which use the selected document.
*/
- private List<Publication> usedby = null;
+ private transient List<Publication> _usedby = null;
/**
* List of selected impacted documents ids.
*/
- private long[] docusedby = null;
+ private transient long[] _docusedby = null;
/**
* Summary of changes in the new version.
*/
- private String summary = null;
+ private String _description = null;
/**
* Version number extracted from the imported file, if exist.
*/
- private String docver = "";
+ private String _version = "";
/**
* Date extracted from the imported file, if exist.
*/
- private String date = "";
+ private String _date = "";
/**
* Injected project settings service.
*/
- private ProjectSettingsService _projectSettingsService;
+ private ProjectSettingsService _projectSettings;
/**
* Injected publication service.
*/
*/
public String doInitialize() {
- setMenuProperty("study");
- setTitleProperty("study");
+ setMenuProperty(Constants.STUDY_MENU);
+ setTitleProperty(Constants.STUDY_MENU);
setEditDisabledProperty("true");
if ("true".equals(getWriteAccess())) {
- setToolProperty("study");
+ setToolProperty(Constants.STUDY_MENU);
} else {
- setToolProperty("none");
+ setToolProperty(Constants.NONE);
}
- setLeftMenuProperty("study");
+ setLeftMenuProperty(Constants.STUDY_MENU);
initializationFullScreenContext(_menuProperty, _titleProperty, _editDisabledProperty, _toolProperty, _leftMenuProperty);
User user = getConnectedUser();
mystudy = getOpenStudy();
Publication tag = mystudy.getSelectedStep().getDocument(
- Integer.valueOf(index));
+ Integer.valueOf(_index));
Document doc = tag.value();
deftype = doc.getType();
docname = doc.getTitle();
- defuses = new Vector<Document>();
- usedby = new Vector<Publication>();
-
- if (!extractProperties(upfile, doc)) {
- if (!("none".equals(_toolProperty))) {
- setToolProperty("none");
- setLeftMenuProperty("study");
+ defuses = new ArrayList<Document>();
+ _usedby = new ArrayList<Publication>();
+
+ String res = SUCCESS;
+ if (extractProperties(upfile, doc)) {
+ setupDefaultUses(deftype);
+ // Add additional documents used by the current version
+ List<Relation> uses = doc.getRelations(UsesRelation.class);
+ for (Iterator<Relation> i = uses.iterator(); i.hasNext();) {
+ Document used = (Document) i.next().getTo();
+ if (!defuses.contains(used)) {
+ defuses.add(used);
+ }
+ }
+ // Setup dependencies
+ _usedby.addAll(tag.getRelations(UsedByRelation.class));
+ } else {
+ if (!(Constants.NONE.equals(_toolProperty))) {
+ setToolProperty(Constants.NONE);
+ setLeftMenuProperty(Constants.STUDY_MENU);
initializationFullScreenContext(_menuProperty, _titleProperty, _editDisabledProperty, _toolProperty, _leftMenuProperty);
}
- return ERROR;
- }
- setupDefaultUses(deftype);
- // Add additional documents used by the current version
- List<Relation> uses = doc.getRelations(UsesRelation.class);
- for (Iterator<Relation> i = uses.iterator(); i.hasNext();) {
- Document used = (Document) i.next().getTo();
- if (!defuses.contains(used))
- defuses.add(used);
- }
- // Setup dependencies
- List<Publication> relist = tag.getRelations(UsedByRelation.class);
- for (Iterator<Publication> i = relist.iterator(); i.hasNext();) {
- usedby.add(i.next());
+ res = ERROR;
}
- return SUCCESS;
+ return res;
}
/**
* the document to version
* @return true if succeeded or if the file is not XML, otherwise return false
*/
- private boolean extractProperties(File upfile, Document doc) {
+ private boolean extractProperties(final File upfile, final Document doc) {
boolean res = true;
Reader tool = Toolbox.getReader(upfile);
if (tool != null) {
String fileref = tool.extractProperty("reference");
String filever = tool.extractProperty("version");
- if (fileref != null && !doc.getReference().equals(fileref)) {
- setErrorCode("reference.mismatch");
- res = false;
- } else {
+ if (fileref == null || doc.getReference().equals(fileref)) {
if (filever != null) {
try {
Revision.Format get = new Revision.Format(
} else {
state = ProgressState.inDRAFT;
}
- docver = newver.toString();
+ _version = newver.toString();
} catch (Exception e) {
setErrorCode("version.mismatch");
res = false;
}
}
if (res) {
- summary = tool.extractProperty("history");
- date = tool.extractProperty("date");
- if (date != null) {
+ _description = tool.extractProperty("history");
+ _date = tool.extractProperty("date");
+ if (_date == null) {
+ _date = "";
+ } else {
ResourceBundle locale = ResourceBundle.getBundle("som",
getApplicationSettings().getCurrentLocale());
SimpleDateFormat check = new SimpleDateFormat(locale
.getString("date.format"));
try {
- check.parse(date);
+ check.parse(_date);
} catch (ParseException e) {
setErrorCode("format.date");
res = false;
}
- } else {
- date = "";
}
}
+ } else {
+ setErrorCode("reference.mismatch");
+ res = false;
}
}
return res;
* @return SUCCESS - if succeeded, "cancel" - if canceled, ERROR - if failed
*/
public String doVersion() {
- setMenuProperty("study");
- setTitleProperty("study");
+ String res = ERROR;
+ setMenuProperty(Constants.STUDY_MENU);
+ setTitleProperty(Constants.STUDY_MENU);
setEditDisabledProperty("true");
initializationScreenContext(_menuProperty, _titleProperty, _editDisabledProperty);
- if (action == ToDo.cancel)
- return "cancel";
-
- try {
- // Getting user inputs
- mystudy = getOpenStudy();
- User user = getConnectedUser();
- Step step = mystudy.getSelectedStep();
- Date aDate = null;
- if (date.length() > 0) {
- ResourceBundle locale = ResourceBundle.getBundle("som",
- getApplicationSettings().getCurrentLocale());
- SimpleDateFormat get = new SimpleDateFormat(locale
- .getString("date.format"));
- aDate = get.parse(date);
+ if (action == ToDo.cancel) {
+ res = "cancel";
+ } else {
+
+ try {
+ // Getting user inputs
+ mystudy = getOpenStudy();
+ User user = getConnectedUser();
+ Step step = mystudy.getSelectedStep();
+ Date aDate = null;
+ if (_date.length() > 0) {
+ ResourceBundle locale = ResourceBundle.getBundle("som",
+ getApplicationSettings().getCurrentLocale());
+ SimpleDateFormat get = new SimpleDateFormat(locale
+ .getString("date.format"));
+ aDate = get.parse(_date);
+ }
+
+ String[] listDocuses = null;
+ if (docuses != null) {
+ listDocuses = docuses.split(",");
+ }
+ getPublicationService().versionDocument(step, user, filename,
+ Integer.valueOf(_index), _version, _description, state, aDate,
+ listDocuses, _docusedby);
+
+ // Update of the open study
+ mystudy.setSelection(mystudy.getSelection()); // Rebuilds the presentation
+ // TODO: Look is an optimization is possible (for example by updating the presentation of versioned document)
+
+ res = SUCCESS;
+ } catch (FileNotFoundException error) {
+ LOG.error("Reason:", error);
+ setErrorCode("import.file");
+ } catch (Exception error) {
+ LOG.error("Reason:", error);
+ setErrorCode("internal");
}
-
- String[] listDocuses = null;
- if (docuses != null) {
- listDocuses = docuses.split(",");
+ if (!SUCCESS.equals(res)) {
+ setToolProperty(Constants.NONE);
+
+ setLeftMenuProperty(Constants.STUDY_MENU);
+ initializationFullScreenContext(_menuProperty, _titleProperty, _editDisabledProperty, _toolProperty, _leftMenuProperty);
}
- getPublicationService().versionDocument(step, user, filename,
- Integer.valueOf(index), docver, summary, state, aDate,
- listDocuses, docusedby);
-
- // Update of the open study
- mystudy.setSelection(mystudy.getSelection()); // Rebuilds the presentation
- // TODO: Look is an optimization is possible (for example by updating the presentation of versioned document)
-
- return SUCCESS;
- } catch (FileNotFoundException error) {
- LOG.error("Reason:", error);
- setErrorCode("import.file");
- } catch (Exception error) {
- LOG.error("Reason:", error);
- setErrorCode("internal");
- }
-
- setToolProperty("none");
-
- setLeftMenuProperty("study");
- initializationFullScreenContext(_menuProperty, _titleProperty, _editDisabledProperty, _toolProperty, _leftMenuProperty);
-
- return ERROR;
+ }
+ return res;
}
// ==============================================================================================================================
// ==============================================================================================================================
public String getDate() {
- return date;
+ return _date;
}
public List<Publication> getDependencies() {
- return usedby;
+ return _usedby;
}
public String getDescription() {
- return summary;
+ return _description;
}
public String getIndex() {
- return index;
+ return _index;
}
public String getVersion() {
- return docver;
+ return _version;
}
- public void setDate(String date) {
- this.date = date;
+ public void setDate(final String date) {
+ this._date = date;
}
- public void setDefaultDescription(String summary) {
- if (this.summary == null)
- this.summary = summary;
+ public void setDefaultDescription(final String summary) {
+ if (this._description == null) {
+ this._description = summary;
+ }
}
- public void setDescription(String summary) {
- this.summary = summary;
+ public void setDescription(final String summary) {
+ this._description = summary;
}
- public void setIndex(String index) {
- this.index = index;
+ public void setIndex(final String index) {
+ this._index = index;
}
- public void setUsedBy(long[] list) {
- this.docusedby = list;
+ public void setUsedBy(final long[] list) {
+ this._docusedby = list;
}
- public void setVersion(String value) {
- this.docver = value;
+ 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;
}
* @param stepService
* the stepService to set
*/
- public void setStepService(StepService stepService) {
+ public void setStepService(final StepService stepService) {
_stepService = stepService;
}
* @param repositoryService
* the repositoryService to set
*/
- public void setRepositoryService(RepositoryService repositoryService) {
+ public void setRepositoryService(final RepositoryService repositoryService) {
_repositoryService = repositoryService;
}
* @param menuProperty
* the menuProperty to set
*/
- public void setMenuProperty(String menuProperty) {
+ public void setMenuProperty(final String menuProperty) {
this._menuProperty = menuProperty;
}
* @param titleProperty
* the titleProperty to set
*/
- public void setTitleProperty(String titleProperty) {
+ public void setTitleProperty(final String titleProperty) {
_titleProperty = titleProperty;
}
}
/**
- * Set the _editDisabledProperty.
+ * Set the editDisabledProperty.
*
- * @param _editDisabledProperty
- * the _editDisabledProperty to set
+ * @param editDisabledProperty
+ * the editDisabledProperty to set
*/
- public void setEditDisabledProperty(String _editDisabledProperty) {
- this._editDisabledProperty = _editDisabledProperty;
+ public void setEditDisabledProperty(final String editDisabledProperty) {
+ this._editDisabledProperty = editDisabledProperty;
}
/**