This is an automated email from the git hooks/post-receive script. New commit to branch feature/6009-create-document in repository coselmar. See http://git.codelutin.com/coselmar.git commit c07e6075711aa057960e58d2a8c062d2584b59d9 Author: Yannick Martel <martel@©odelutin.com> Date: Mon Nov 3 18:02:15 2014 +0100 first step of document creation : document metadata --- coselmar-persistence/pom.xml | 3 +- .../src/main/xmi/coselmar-model.properties | 1 + .../src/main/xmi/coselmar-model.zargo | Bin 4041 -> 4656 bytes .../src/main/xmi/coselmar-model.zargo~ | Bin 0 -> 4635 bytes .../fr/ifremer/coselmar/beans/DocumentBean.java | 10 ++++++ .../coselmar/services/v1/DocumentsWebService.java | 38 ++++++++++++++++----- .../src/main/webapp/js/coselmar-controllers.js | 6 ++-- coselmar-ui/src/main/webapp/views/newdocument.html | 8 +++-- 8 files changed, 52 insertions(+), 14 deletions(-) diff --git a/coselmar-persistence/pom.xml b/coselmar-persistence/pom.xml index 1fefb8f..0932629 100644 --- a/coselmar-persistence/pom.xml +++ b/coselmar-persistence/pom.xml @@ -137,7 +137,8 @@ http://maven.apache.org/xsd/maven-4.0.0.xsd"> fr.ifremer.coselmar.persistence </defaultPackage> <templates> - org.nuiton.topia.templates.TopiaMetaTransformer + org.nuiton.topia.templates.TopiaMetaTransformer, + org.nuiton.eugene.java.JavaEnumerationTransformer, </templates> <failIfUnsafe>true</failIfUnsafe> </configuration> diff --git a/coselmar-persistence/src/main/xmi/coselmar-model.properties b/coselmar-persistence/src/main/xmi/coselmar-model.properties index 85c849e..15b50a2 100644 --- a/coselmar-persistence/src/main/xmi/coselmar-model.properties +++ b/coselmar-persistence/src/main/xmi/coselmar-model.properties @@ -1,3 +1,4 @@ model.tagvalue.version=1.0 package.fr.ifremer.coselmar.persistence.entity.stereotype=entity +model.tagvalue.useEnumerationName=true \ No newline at end of file diff --git a/coselmar-persistence/src/main/xmi/coselmar-model.zargo b/coselmar-persistence/src/main/xmi/coselmar-model.zargo index b0e53d3..f8878a3 100644 Binary files a/coselmar-persistence/src/main/xmi/coselmar-model.zargo and b/coselmar-persistence/src/main/xmi/coselmar-model.zargo differ diff --git a/coselmar-persistence/src/main/xmi/coselmar-model.zargo~ b/coselmar-persistence/src/main/xmi/coselmar-model.zargo~ index e69de29..7bc7172 100644 Binary files a/coselmar-persistence/src/main/xmi/coselmar-model.zargo~ and b/coselmar-persistence/src/main/xmi/coselmar-model.zargo~ differ diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/DocumentBean.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/DocumentBean.java index d96652f..cc785a8 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/DocumentBean.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/DocumentBean.java @@ -2,6 +2,7 @@ package fr.ifremer.coselmar.beans; import java.io.Serializable; import java.util.Date; +import java.util.List; /** * @author ymartel <martel@codelutin.com> @@ -12,6 +13,7 @@ public class DocumentBean implements Serializable { protected String name; protected String ownerName; protected String privacy; + protected List<String> keywords; protected Date depositDate; public DocumentBean(String id, String name, String ownerName, String privacy, Date depositDate) { @@ -61,4 +63,12 @@ public class DocumentBean implements Serializable { public void setDepositDate(Date depositDate) { this.depositDate = depositDate; } + + public List<String> getKeywords() { + return keywords; + } + + public void setKeywords(List<String> keywords) { + this.keywords = keywords; + } } diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/DocumentsWebService.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/DocumentsWebService.java index 331bcd4..0220344 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/DocumentsWebService.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/DocumentsWebService.java @@ -4,10 +4,12 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import com.google.common.base.Preconditions; import fr.ifremer.coselmar.beans.DocumentBean; +import fr.ifremer.coselmar.persistence.entity.Document; +import fr.ifremer.coselmar.persistence.entity.DocumentPrivacy; import fr.ifremer.coselmar.services.CoselmarTechnicalException; import fr.ifremer.coselmar.services.CoselmarWebServiceSupport; -import org.apache.commons.lang3.RandomUtils; /** * @author ymartel <martel@codelutin.com> @@ -22,19 +24,36 @@ public class DocumentsWebService extends CoselmarWebServiceSupport { } public List<DocumentBean> getDocuments() { - //TODO load from bdd - List<DocumentBean> result = new ArrayList<>(); - Date now = new Date(); - for (int i = 1; i < RandomUtils.nextInt(0, 20); i++) { - String privacy = i % 2 == 0 ? "public" : "private"; - DocumentBean document = new DocumentBean(String.valueOf(i), "fakeDocument " + i, "no owner", privacy, now); - result.add(document); + List<Document> documentList = getDocumentDao().findAll(); + List<DocumentBean> result = new ArrayList<>(documentList.size()); + + for (Document document : documentList) { + Date depositDate = new Date(document.getDepositDate().getTime()); + //TODO ymartel 20141103 : manage file ? + DocumentBean documentBean = new DocumentBean(document.getTopiaId(), document.getName(), "N/A", document.getPrivacy().name(), depositDate); + result.add(documentBean); } + return result; } public void addDocument(DocumentBean documentBean) { - throw new CoselmarTechnicalException("not yet implemented"); + Preconditions.checkNotNull(documentBean); + Document document = getDocumentDao().create(); + + document.setName(documentBean.getName()); + document.setPrivacy(DocumentPrivacy.valueOf(documentBean.getPrivacy().toUpperCase())); + document.addAllKeywords(documentBean.getKeywords()); + + Date depositDate = documentBean.getDepositDate(); + if (depositDate != null) { + document.setDepositDate(new Date(depositDate.getTime())); + } else { + document.setDepositDate(new Date()); + } + //TODO ymartel 20141103 : manage file + + commit(); } public void saveDocument(DocumentBean documentBean) { @@ -44,4 +63,5 @@ public class DocumentsWebService extends CoselmarWebServiceSupport { public void deleteDocument(String documentId) { throw new CoselmarTechnicalException("not yet implemented"); } + } diff --git a/coselmar-ui/src/main/webapp/js/coselmar-controllers.js b/coselmar-ui/src/main/webapp/js/coselmar-controllers.js index 6effe66..68316a6 100644 --- a/coselmar-ui/src/main/webapp/js/coselmar-controllers.js +++ b/coselmar-ui/src/main/webapp/js/coselmar-controllers.js @@ -12,16 +12,18 @@ coselmarControllers.controller("DocumentsCtrl", ['$scope','documentService', fun // Controller for new document View coselmarControllers.controller("NewDocumentCtrl", ['$scope', 'documentService', function($scope, documentService){ - documentService.getDocuments($scope); + $scope.privacy="public"; $scope.createNewDocument = function(){ var newdocument = {'name':$scope.name, 'file':$scope.file, 'privacy':$scope.privacy, 'keywords':$scope.keywords}; + console.log("document to create"); + console.log(newdocument); // Call service to create a new document documentService.createDocument(newdocument, $scope); // Push new doc to existing table column - $scope.documents.push(newdocument); + //$scope.documents.push(newdocument); // Reset fields values $scope.name=''; diff --git a/coselmar-ui/src/main/webapp/views/newdocument.html b/coselmar-ui/src/main/webapp/views/newdocument.html index 9782b46..2a27b38 100644 --- a/coselmar-ui/src/main/webapp/views/newdocument.html +++ b/coselmar-ui/src/main/webapp/views/newdocument.html @@ -25,7 +25,7 @@ <label class="col-md-4 control-label">keyword</label> <div class="col-md-5"> - <input type="text" class="form-control" name="keyword" ng-model="keyword" required=""/> + <input type="text" class="form-control" name="keyword" ng-model="keywords" ng-list required=""/> </div> </div> @@ -33,7 +33,11 @@ <label class="col-md-4 control-label">Privacy</label> <div class="col-md-5"> - <input type="text" class="form-control" name="privacy" ng-model="privacy"/> + <select class="form-control" name="privacy" ng-model="privacy"> + <option value="private">private</option> + <option value="public">public</option> + <option value="restricted">restricted</option> + </select> </div> </div> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.