r1413 - in xwiki-apps/gelc/gelcv1/trunk/gelcplugins: . src/main/java/org/gelc/xwiki/plugins/assets src/main/java/org/gelc/xwiki/plugins/framework src/main/java/org/gelc/xwiki/plugins/licence src/main/java/org/gelc/xwiki/plugins/mime src/test/java/org/gelc/xwiki/plugins/mime

Jeremi Joslin jeremi at users.forge.objectweb.org
Fri Oct 20 03:36:31 CEST 2006


Author: jeremi
Date: 2006-10-20 03:36:21 +0200 (Fri, 20 Oct 2006)
New Revision: 1413

Modified:
   xwiki-apps/gelc/gelcv1/trunk/gelcplugins/gelcplugins.iml
   xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetConstant.java
   xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetManagerPlugin.java
   xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetManagerPluginApi.java
   xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/framework/FrameworkManagerPlugin.java
   xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/framework/ImportFilter.java
   xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/licence/Licence.java
   xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeType.java
   xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeTypeConstant.java
   xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeTypePlugin.java
   xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeTypePluginAPI.java
   xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/test/java/org/gelc/xwiki/plugins/mime/MimeTypePluginTest.java
Log:
[GELC]
* Add the Licence manager
* refactor the mimetype
* add functions to the asset Manager

Modified: xwiki-apps/gelc/gelcv1/trunk/gelcplugins/gelcplugins.iml
===================================================================
--- xwiki-apps/gelc/gelcv1/trunk/gelcplugins/gelcplugins.iml	2006-10-20 01:28:58 UTC (rev 1412)
+++ xwiki-apps/gelc/gelcv1/trunk/gelcplugins/gelcplugins.iml	2006-10-20 01:36:21 UTC (rev 1413)
@@ -16,7 +16,7 @@
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="library" name="xwiki" level="project" />
     <orderEntry type="module" module-name="xwiki" />
-    <orderEntry type="library" name="Tomcat 5.0" level="application" />
+    <orderEntry type="library" name="Tomcat XWiki" level="application_server_libraries" />
     <orderEntryProperties />
   </component>
 </module>

Modified: xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetConstant.java
===================================================================
--- xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetConstant.java	2006-10-20 01:28:58 UTC (rev 1412)
+++ xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetConstant.java	2006-10-20 01:36:21 UTC (rev 1413)
@@ -1,6 +1,26 @@
+/*
+ * Copyright 2006, XpertNet SARL, and individual contributors as indicated
+ * by the contributors.txt.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ *
+ * @author jeremi
+ */
 package org.gelc.xwiki.plugins.assets;
 
-
 public interface AssetConstant {
     public final static String PLUGIN_NAME = "asset_manager";
 
@@ -14,36 +34,63 @@
     public final static String ASSET_TEMPORARY_SPACE = "AssetTemp";
 
 
+    /**
+     *     Class FrameworkItemAssetClass
+     */
     public final static String FRAMEWORK_ASSET_CLASS_FULLNAME = "XWiki.FrameworkItemAssetClass";
     public final static String FRAMEWORK_ASSET_CLASS_NAME = "FrameworkItemAssetClass";
 
     public final static String CLASS_FRAMEWORK_ITEM = "framework_item";
 
-    public final static String ASSET_CLASS_FULLNAME = "XWiki.AssetClass";
-    public final static String ASSET_CLASS_NAME = "AssetClass";
 
-    public final static String ASSET_ITEM_MIME_TYPE = "mimeType";
-    public final static String ASSET_ITEM_MIME_TITLE = "title";
-    public final static String ASSET_ITEM_MIME_DESCRIPTION = "description";
-    public final static String ASSET_ITEM_MIME_KEYWORDS = "keywords";
+    /**
+     *     Class AssetClass
+     */
+    public static final String ASSET_CLASS_FULLNAME = "XWiki.AssetClass";
+    public static final String ASSET_CLASS_NAME = "AssetClass";
 
-    public final static String ASSET_ITEM_LEARNING_RESOURCE_TYPE = "learning_resource_type";
-    public final static String ASSET_ITEM_LEARNING_RESOURCE_TYPE_VALUES = "Animation|Activity|Audio|Collection|Diagram|Exam/Assessment|Exercise|Experiment|Figure|Graph|Graphic/Image|Index|Lecture|Narrative text|Problem statement|Question bank|Question/Item|Questionnaire/Quiz|Self-assessment|Simulation|Slide|Table|Video|Other|Lesson Plan|Content resource|Text|Text book|Book (Other)|Links|Learning Object|Curriculum Package|Zip Archive";
+    public static final String ASSET_ITEM_TITLE = "title";
+    public static final String ASSET_ITEM_DESCRIPTION = "description";
+    public static final String ASSET_ITEM_KEYWORDS = "keywords";
+    public static final String ASSET_ITEM_AGGREGATION_LEVEL = "aggregation_level";
+    public static final String ASSET_ITEM_AGGREGATION_LEVEL_VALUES = "Asset|Material|Lecture|Unit|Course"; 
+    public static final String ASSET_ITEM_CATEGORY = "category";
 
-    public final static String ASSET_ITEM_DIFICULTY = "dificulty";
-    public final static String ASSET_ITEM_DIFICULTY_VALUES = "Very easy|Easy|Medium|Difficult|Very difficult";
+    public static final String ASSET_ITEM_STATUS = "status";
+    public static final String ASSET_ITEM_STATUS_VALUES = "Draft|Final|Revised|Unavailable";
 
-    public final static String ASSET_ITEM_EDUCATIONAL_LEVEL = "educational_level";
-    public final static String ASSET_ITEM_EDUCATIONAL_LEVEL_VALUES = "Preschool|Early Elementary|Upper Elementary|Middle School|High School|Higher Ed|Professional";
+    public static final String ASSET_ITEM_LEARNING_RESOURCE_TYPE = "learning_resource_type";
+    public static final String ASSET_ITEM_LEARNING_RESOURCE_TYPE_VALUES = "Animation|Activity|Audio|Collection|Diagram|Exam/Assessment|Exercise|Experiment|Figure|Graph|Graphic/Image|Index|Lecture|Narrative text|Problem statement|Question bank|Question/Item|Questionnaire/Quiz|Self-assessment|Simulation|Slide|Table|Video|Other|Lesson Plan|Content resource|Text|Text book|Book (Other)|Links|Learning Object|Curriculum Package|Zip Archive";
 
+    public static final String ASSET_ITEM_DIFICULTY = "dificulty";
+    public static final String ASSET_ITEM_DIFICULTY_VALUES = "Very easy|Easy|Medium|Difficult|Very difficult";
 
-    public final static String ASSET_ITEM_CATEGORY = "category";
+    public static final String ASSET_ITEM_EDUCATIONAL_LEVEL = "educational_level";
+    public static final String ASSET_ITEM_EDUCATIONAL_LEVEL_VALUES = "Preschool|Early Elementary|Upper Elementary|Middle School|High School|Higher Ed|Professional";
 
 
+    /**
+     *    Class ExternalAssetClass
+     */
+    public static final String EXTERNAL_ASSET_CLASS_FULLNAME = "XWiki.ExternalAssetClass";
+    public static final String EXTERNAL_ASSET_CLASS_NAME = "ExternalAssetClass";
 
-    public final static String EXTERNAL_ASSET_CLASS_FULLNAME = "XWiki.ExternalAssetClass";
-    public final static String EXTERNAL_ASSET_CLASS_NAME = "ExternalAssetClass";
+    public static final String EXTERNAL_ASSET_LINK = "link";
+    public static final String REQUEST_ASSET_FULLNAME = "assetName";
 
-    public final static String EXTERNAL_ASSET_LINK = "link";
+
+    /**
+     *    Class AssetLicenseClass
+     */
+    public static final String ASSET_LICENCE_CLASS_FULLNAME = "XWiki.AssetLicenseClass";
+    public static final String ASSET_LICENCE_CLASS_NAME = "AssetLicenseClass";
+
+        public static final String ASSET_LICENCE_ITEM_RIGHTS_HOLDER = "rightsHolder";
+        public static final String ASSET_LICENCE_ITEM_EXTERNAL_RIGHTS_HOLDER = "externalRightsHolder";
+        public static final String ASSET_LICENCE_ITEM_LICENCE_TYPE = "licenseType";
+        public static final String ASSET_LICENCE_ITEM_EXPIRY_DATE = "expiryDate";
+
+
+
     
 }

Modified: xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetManagerPlugin.java
===================================================================
--- xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetManagerPlugin.java	2006-10-20 01:28:58 UTC (rev 1412)
+++ xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetManagerPlugin.java	2006-10-20 01:36:21 UTC (rev 1413)
@@ -25,11 +25,14 @@
 import com.xpn.xwiki.XWikiContext;
 import com.xpn.xwiki.XWikiException;
 import com.xpn.xwiki.api.Api;
+import com.xpn.xwiki.api.Document;
 import com.xpn.xwiki.doc.XWikiDocument;
 import com.xpn.xwiki.objects.classes.BaseClass;
 import com.xpn.xwiki.plugin.XWikiDefaultPlugin;
 import com.xpn.xwiki.plugin.XWikiPluginInterface;
+import com.xpn.xwiki.web.XWikiRequest;
 import org.gelc.xwiki.plugins.mime.MimeTypePlugin;
+import org.gelc.xwiki.plugins.mime.MimeTypePluginAPI;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -76,16 +79,75 @@
         return asset;
     }
 
+    public Asset getTemporaryAssetDocument(String assetName, boolean create, XWikiContext context) throws XWikiException {
+        XWikiDocument doc = context.getWiki().getDocument(ASSET_TEMPORARY_SPACE, assetName, context);
+        if (doc.isNew() && create){
+            return createAssetDocument(assetName, context);
+        }
+        else if (doc.isNew() && !create){
+            return null;
+        }
+        return (Asset) doc.newDocument(context);
+    }
 
+    public String getAssetTemporarySpace(){
+        return ASSET_TEMPORARY_SPACE;
+    }
+
+    public String createOrUpdateAssetFromRequest(XWikiContext context) throws XWikiException {
+        XWikiRequest req = context.getRequest();
+        XWiki xwiki = context.getWiki();
+        String docName =  req.get(REQUEST_ASSET_FULLNAME);
+        Asset asset;
+
+        com.xpn.xwiki.api.Object assetObject;
+
+        if (docName == null || docName.length() == 0){
+            docName = xwiki.getUniquePageName(ASSET_TEMPORARY_SPACE, context);
+            Document doc = xwiki.getDocument(ASSET_TEMPORARY_SPACE, docName, context).newDocument(context);
+            assetObject = doc.updateObjectFromRequest(ASSET_CLASS_FULLNAME);
+            String pageName = (String) assetObject.get(ASSET_ITEM_TITLE);
+            if (pageName == null)
+                pageName = docName;
+            else
+                pageName = xwiki.getUniquePageName(ASSET_TEMPORARY_SPACE, pageName, context);   
+            asset = createAssetDocument(pageName, context);
+            asset.save();
+        }
+        else {
+            asset = (Asset) xwiki.getDocument(ASSET_TEMPORARY_SPACE, docName, context).newDocument(context);
+        }
+        if (!isAssetContentSetUp(asset, context)){
+            if (asset.addAttachments() > 0)
+                asset = (Asset) xwiki.getDocument(asset.getSpace(), asset.getName(), context).newDocument(context);
+            else
+                asset.addObjectsFromRequest(EXTERNAL_ASSET_CLASS_FULLNAME);
+        }
+        asset.updateObjectFromRequest(ASSET_CLASS_FULLNAME);
+
+        String[] classList = req.getParameterValues("classList");
+        if (classList != null)
+            for(int i = 0; i < classList.length; i++)
+                asset.updateObjectFromRequest(classList[i]);
+        asset.save();
+        return asset.getFullName();
+    }
+
+
     public boolean isComplet(Asset asset, XWikiContext context) {
         Map res = getStatusList(asset, context);
-        if (res.get(ASSET_STATUS_ATTACHEMENT).equals(0) && res.get(ASSET_STATUS_EXTERNAL_LINK).equals(0))
+        if (!isAssetContentSetUp(asset, context))
             return false;
         if (res.get(ASSET_STATUS_FRAMEWORK_ITEM_SELECTED).equals(0))
             return false;
         return true;
     }
 
+    public boolean isAssetContentSetUp(Asset asset, XWikiContext context){
+        Map res = getStatusList(asset, context);
+        return !(res.get(ASSET_STATUS_ATTACHEMENT).equals(0) && res.get(ASSET_STATUS_EXTERNAL_LINK).equals(0));
+    }
+
     public Map getStatusList(Asset asset, XWikiContext context) {
         Map res = new HashMap();
         if (asset.getAttachmentList().size() == 0)
@@ -118,6 +180,7 @@
         initFrameworkItemAssetClass(context);
         initExternalAssetClass(context);
         initAssetClass(context);
+        initLicenceClass(context);
     }
 
     private void initFrameworkItemAssetClass(XWikiContext context) throws XWikiException {
@@ -148,6 +211,39 @@
             xwiki.saveDocument(doc, context);
     }
 
+    private void initLicenceClass(XWikiContext context) throws XWikiException {
+        XWikiDocument doc;
+        XWiki xwiki = context.getWiki();
+        boolean needsUpdate = false;
+
+        try {
+            doc = xwiki.getDocument(ASSET_LICENCE_CLASS_FULLNAME, context);
+        } catch (Exception e) {
+            doc = new XWikiDocument();
+            doc.setSpace("XWiki");
+            doc.setName(ASSET_LICENCE_CLASS_NAME);
+            needsUpdate = true;
+        }
+
+        BaseClass bclass = doc.getxWikiClass();
+        bclass.setName(ASSET_LICENCE_CLASS_FULLNAME);
+        needsUpdate |= bclass.addTextField(ASSET_LICENCE_ITEM_RIGHTS_HOLDER, "Right holder", 500);
+        needsUpdate |= bclass.addDateField(ASSET_LICENCE_ITEM_EXPIRY_DATE, "Expiry date");
+        needsUpdate |= bclass.addTextField(ASSET_LICENCE_ITEM_EXTERNAL_RIGHTS_HOLDER, "External right holder", 500);
+        needsUpdate |= bclass.addTextField(ASSET_LICENCE_ITEM_LICENCE_TYPE, "Licence type", 500);
+
+        String content = doc.getContent();
+        if ((content==null)||(content.equals(""))) {
+            needsUpdate = true;
+            doc.setContent("1 " + ASSET_LICENCE_CLASS_FULLNAME);
+        }
+
+        if (needsUpdate)
+            xwiki.saveDocument(doc, context);
+    }
+
+
+
     private void initAssetClass(XWikiContext context) throws XWikiException {
         XWikiDocument doc;
         XWiki xwiki = context.getWiki();
@@ -165,13 +261,15 @@
         BaseClass bclass = doc.getxWikiClass();
         bclass.setName(ASSET_CLASS_FULLNAME);
 
-        needsUpdate |= bclass.addTextField(ASSET_ITEM_MIME_TITLE, "title", 50);
-        needsUpdate |= bclass.addTextField(ASSET_ITEM_MIME_TYPE, "mimeType", 50);
-        needsUpdate |= bclass.addTextAreaField(ASSET_ITEM_MIME_DESCRIPTION, "description", 80, 10);
-        needsUpdate |= bclass.addTextAreaField(ASSET_ITEM_MIME_KEYWORDS, "keywords", 80, 10);
+        needsUpdate |= bclass.addTextField(ASSET_ITEM_TITLE, "title", 1000);
+        needsUpdate |= bclass.addTextAreaField(ASSET_ITEM_DESCRIPTION, "description", 80, 10);
+        needsUpdate |= bclass.addStaticListField(ASSET_ITEM_KEYWORDS, "keywords", 5, true, "");
+        needsUpdate |= bclass.addStaticListField(ASSET_ITEM_AGGREGATION_LEVEL, "Aggregation level", 5, false, ASSET_ITEM_AGGREGATION_LEVEL_VALUES);
+        needsUpdate |= bclass.addStaticListField(ASSET_ITEM_STATUS, "Status", 5, false, ASSET_ITEM_STATUS_VALUES);
+
         needsUpdate |= bclass.addStaticListField(ASSET_ITEM_LEARNING_RESOURCE_TYPE, "Learnign resource Type", ASSET_ITEM_LEARNING_RESOURCE_TYPE_VALUES);
         needsUpdate |= bclass.addStaticListField(ASSET_ITEM_DIFICULTY, "Dificulty", ASSET_ITEM_DIFICULTY_VALUES);
-        needsUpdate |= bclass.addStaticListField(ASSET_ITEM_EDUCATIONAL_LEVEL, "Eucational Level", ASSET_ITEM_EDUCATIONAL_LEVEL_VALUES);
+        needsUpdate |= bclass.addStaticListField(ASSET_ITEM_EDUCATIONAL_LEVEL, "Educational Level", ASSET_ITEM_EDUCATIONAL_LEVEL_VALUES);
 
 
 
@@ -259,4 +357,18 @@
         obj.set(EXTERNAL_ASSET_LINK, link);
         return true;
     }
+
+    public String getTechnicalMetaDataClassName(Asset asset, XWikiContext context) throws XWikiException {
+        /* if (asset.getAttachmentList().size() == 0)
+            return null;
+        String mimeType = ((Attachment)asset.getAttachmentList().get(0)).getMimeType();
+        if (mimeType == null || mimeType.length() == 0){
+            return null;
+        }         */
+        asset.use(ASSET_CLASS_FULLNAME);
+        String category = (String) asset.get(ASSET_ITEM_CATEGORY);
+        MimeTypePluginAPI mtmng = (MimeTypePluginAPI) context.getWiki().getPluginApi(MimeTypePlugin.PLUGIN_NAME, context);
+        String docName = mtmng.getCategoryPageName(category);
+        return docName;
+    }
 }

Modified: xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetManagerPluginApi.java
===================================================================
--- xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetManagerPluginApi.java	2006-10-20 01:28:58 UTC (rev 1412)
+++ xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetManagerPluginApi.java	2006-10-20 01:36:21 UTC (rev 1413)
@@ -48,10 +48,14 @@
         return assetManagerPlugin.createAssetDocument(assetName, context);
     }
 
-    public Asset getAssetDocument(String assetName) {
-        return null;
+    public Asset getTemporaryAssetDocument(String assetName) throws XWikiException {
+        return assetManagerPlugin.getTemporaryAssetDocument(assetName, true, context);
     }
 
+    public Asset getTemporaryAssetDocument(String assetName, boolean create) throws XWikiException {
+        return assetManagerPlugin.getTemporaryAssetDocument(assetName, create, context);    
+    }
+
     public void addAttachment(InputStream iStream, String name, Asset asset) throws IOException, XWikiException {
         assetManagerPlugin.addAttachment(iStream, name, asset, context);        
     }
@@ -100,7 +104,15 @@
         return assetManagerPlugin.getExternalAsset(asset, context);    
     }
 
+    public String getTechnicalMetaDataClassName(Asset asset) throws XWikiException {
+        return assetManagerPlugin.getTechnicalMetaDataClassName(asset, context);
+    }
 
+    public String getAssetTemporarySpace(){
+        return assetManagerPlugin.getAssetTemporarySpace();
+    }
 
-
+    public String createOrUpdateAssetFromRequest() throws XWikiException {
+        return assetManagerPlugin.createOrUpdateAssetFromRequest(context);
+    }
 }

Modified: xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/framework/FrameworkManagerPlugin.java
===================================================================
--- xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/framework/FrameworkManagerPlugin.java	2006-10-20 01:28:58 UTC (rev 1412)
+++ xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/framework/FrameworkManagerPlugin.java	2006-10-20 01:36:21 UTC (rev 1413)
@@ -230,7 +230,7 @@
     public boolean testIntegrity(String frameworkName, XWikiContext context) {
         boolean valid = true;
 
-        Framework fmwk = null;
+        Framework fmwk;
         try {
             fmwk = getFramework(frameworkName, context);
 

Modified: xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/framework/ImportFilter.java
===================================================================
--- xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/framework/ImportFilter.java	2006-10-20 01:28:58 UTC (rev 1412)
+++ xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/framework/ImportFilter.java	2006-10-20 01:36:21 UTC (rev 1413)
@@ -27,13 +27,6 @@
 import java.io.InputStream;
 import java.util.Collection;
 
-/**
- * Created by IntelliJ IDEA.
- * User: jeremi
- * Date: Sep 27, 2006
- * Time: 2:06:58 PM
- * To change this template use File | Settings | File Templates.
- */
 public interface ImportFilter {
     String      getPageName(Object item, XWikiContext context);
     Framework   readFramework(String frameworkName, InputStream iStream, XWikiContext context) throws XWikiException;

Modified: xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/licence/Licence.java
===================================================================
--- xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/licence/Licence.java	2006-10-20 01:28:58 UTC (rev 1412)
+++ xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/licence/Licence.java	2006-10-20 01:36:21 UTC (rev 1413)
@@ -1,11 +1,33 @@
+/*
+ * Copyright 2006, XpertNet SARL, and individual contributors as indicated
+ * by the contributors.txt.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ *
+ * @author jeremi
+ */
 package org.gelc.xwiki.plugins.licence;
 
-/**
- * Created by IntelliJ IDEA.
- * User: jeremi
- * Date: Oct 4, 2006
- * Time: 10:22:17 AM
- * To change this template use File | Settings | File Templates.
- */
-public class Licence {
+import com.xpn.xwiki.api.Document;
+import com.xpn.xwiki.doc.XWikiDocument;
+import com.xpn.xwiki.XWikiContext;
+
+
+public class Licence extends Document {
+    public Licence(XWikiDocument doc, XWikiContext context) {
+        super(doc, context);
+    }
 }

Modified: xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeType.java
===================================================================
--- xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeType.java	2006-10-20 01:28:58 UTC (rev 1412)
+++ xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeType.java	2006-10-20 01:36:21 UTC (rev 1413)
@@ -30,11 +30,4 @@
         super(doc, context);
     }
 
-    public String getCategory(){
-        return (String) get(MimeTypeConstant.MIMETYPE_ITEM_CATEGORY);
-    }
-
-    public String getMimeType(){
-        return (String) get(MimeTypeConstant.MIMETYPE_ITEM_MIME_TYPE);
-    }
 }

Modified: xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeTypeConstant.java
===================================================================
--- xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeTypeConstant.java	2006-10-20 01:28:58 UTC (rev 1412)
+++ xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeTypeConstant.java	2006-10-20 01:36:21 UTC (rev 1413)
@@ -32,4 +32,5 @@
     public final static String MIMETYPE_ITEM_MIME_TYPE = "mimeType";
     public final static String MIMETYPE_ITEM_CATEGORY = "category";
     public final static String MIMETYPE_ITEM_EXTENSION = "extension";
+    public final static String MIMETYPE_ITEM_ICON = "icon";
 }

Modified: xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeTypePlugin.java
===================================================================
--- xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeTypePlugin.java	2006-10-20 01:28:58 UTC (rev 1412)
+++ xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeTypePlugin.java	2006-10-20 01:36:21 UTC (rev 1413)
@@ -21,22 +21,23 @@
  */
 package org.gelc.xwiki.plugins.mime;
 
+import com.xpn.xwiki.XWiki;
 import com.xpn.xwiki.XWikiContext;
 import com.xpn.xwiki.XWikiException;
-import com.xpn.xwiki.XWiki;
+import com.xpn.xwiki.api.Api;
+import com.xpn.xwiki.api.Object;
+import com.xpn.xwiki.doc.XWikiDocument;
 import com.xpn.xwiki.objects.classes.BaseClass;
-import com.xpn.xwiki.doc.XWikiDocument;
-import com.xpn.xwiki.api.Object;
-import com.xpn.xwiki.api.Api;
 import com.xpn.xwiki.plugin.XWikiDefaultPlugin;
 import com.xpn.xwiki.plugin.XWikiPluginInterface;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.gelc.xwiki.plugins.mdfw.MetaDataFrameworkPlugin;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
-import java.util.Iterator;
-import java.util.ArrayList;
 
 
 public class MimeTypePlugin  extends XWikiDefaultPlugin implements XWikiPluginInterface, MimeTypeConstant {
@@ -73,13 +74,28 @@
     }
 
     public void add(String mimeType, String category, String extension, XWikiContext context) throws XWikiException {
-        String pageName = context.getWiki().getUniquePageName(MIMETYPE_SPACE, mimeType, context);
-        MimeType doc = (MimeType) context.getWiki().getDocument(MIMETYPE_SPACE, pageName, context).newDocument(MimeType.class.getName(), context);
-        doc.setCustomClass(MimeType.class.getName());
-        Object obj = doc.newObject(MIMETYPE_CLASS_FULLNAME);
+        add(mimeType, category, extension, "", context);
+    }
+
+    public void add(String mimeType, String category, String extension, String image, XWikiContext context) throws XWikiException {
+        String pageName = context.getWiki().clearName(category, context);
+        XWikiDocument xwDoc = context.getWiki().getDocument(MIMETYPE_SPACE, pageName, context);
+        Object obj;
+        MimeType doc;
+
+        if (xwDoc.isNew()){
+            doc = (MimeType) xwDoc.newDocument(MimeType.class.getName(), context);
+            doc.setCustomClass(MimeType.class.getName());
+            doc.setTitle(category);
+        }
+        else
+            doc = (MimeType) xwDoc.newDocument(context);
+
+        obj = doc.newObject(MIMETYPE_CLASS_FULLNAME);
         doc.use(obj);
         doc.set(MIMETYPE_ITEM_MIME_TYPE, mimeType);
         doc.set(MIMETYPE_ITEM_CATEGORY, category);
+        doc.set(MIMETYPE_ITEM_ICON, image);
         doc.set(MIMETYPE_ITEM_EXTENSION, extension);
         doc.save();
     }
@@ -104,17 +120,25 @@
         return null;
     }
 
-    public List getCategories(XWikiContext context) throws XWikiException {
+    public String getCategoryPageName(String category, XWikiContext context) throws XWikiException {
         String hql = ", BaseObject as obj, StringProperty as prop where obj.name=doc.fullName"
                         + " and obj.className='" + MIMETYPE_CLASS_FULLNAME + "' and prop.id.id = obj.id "
-                        + " and prop.id.name = '" + MIMETYPE_ITEM_CATEGORY + "' "
-                        + " group by prop.value";
+                        + "and prop.id.name = '" + MIMETYPE_ITEM_CATEGORY + "' and prop.value='" + category + "'";
         List list = context.getWiki().getStore().searchDocumentsNames(hql, context);
+        if (list.size() > 0)
+            return (String) list.get(0);
+        return null;
+    }
+
+    public List getCategories(XWikiContext context) throws XWikiException {
+        String hql = ", BaseObject as obj where obj.name=doc.fullName"
+                        + " and obj.className='" + MIMETYPE_CLASS_FULLNAME + "'";
+        List list = context.getWiki().getStore().searchDocumentsNames(hql, context);
         List categs = new ArrayList();
         Iterator it = list.iterator();
         while(it.hasNext()){
             MimeType doc = (MimeType) context.getWiki().getDocument((String) it.next(), context).newDocument(context);
-            categs.add(doc.getCategory());
+            categs.add(doc.getTitle());
         }
 
         return categs;       
@@ -128,7 +152,7 @@
     public static String getCategoriesListHsql(){
         String hql = "select prop.value from BaseObject as obj, StringProperty as prop where "
                     + " obj.className='" + MIMETYPE_CLASS_FULLNAME + "' and prop.id.id = obj.id "
-                    + " and prop.id.name = '" + MIMETYPE_ITEM_CATEGORY + "' "
+                    + " and prop.id.name = '" + MIMETYPE_ITEM_CATEGORY + "'"
                     + " group by prop.value";
         return hql;
     }
@@ -150,8 +174,8 @@
         BaseClass bclass = doc.getxWikiClass();
         bclass.setName(MIMETYPE_CLASS_FULLNAME);
         needsUpdate |= bclass.addTextField(MIMETYPE_ITEM_MIME_TYPE, "Mime type", 50);
-        needsUpdate |= bclass.addTextField(MIMETYPE_ITEM_CATEGORY, "Category", 50);
-        needsUpdate |= bclass.addTextField(MIMETYPE_ITEM_EXTENSION, "extension", 50);
+        needsUpdate |= bclass.addTextField(MIMETYPE_ITEM_EXTENSION, "extension", 50);        
+        needsUpdate |= bclass.addTextField(MIMETYPE_ITEM_ICON, "icon", 50);
 
 
         String content = doc.getContent();
@@ -163,4 +187,18 @@
         if (needsUpdate)
             xwiki.saveDocument(doc, context);
     }
+
+    public void importMimeType(String fileName, XWikiContext context) throws XWikiException, IOException {
+        String[] lines = context.getWiki().getResourceContent(fileName).split("\n");
+        for (int i = 1; i < lines.length; i++) {
+            String[] values = lines[i].split(",");
+            String mimeType = values[3];
+            String extension = values[2];
+            String category = values[1];
+            String image = "";
+            if (values.length >= 6)
+                image = values[5];
+            add(mimeType, category, extension, image, context);           
+        }
+    }
 }

Modified: xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeTypePluginAPI.java
===================================================================
--- xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeTypePluginAPI.java	2006-10-20 01:28:58 UTC (rev 1412)
+++ xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/mime/MimeTypePluginAPI.java	2006-10-20 01:36:21 UTC (rev 1413)
@@ -26,6 +26,7 @@
 import com.xpn.xwiki.api.Api;
 
 import java.util.List;
+import java.io.IOException;
 
 
 public class MimeTypePluginAPI  extends Api {
@@ -52,4 +53,12 @@
         return plugin.getCategories(context);   
     }
 
+    public void importMimeType(String fileName) throws XWikiException, IOException {
+        plugin.importMimeType(fileName, context);
+    }
+
+    public String getCategoryPageName(String category) throws XWikiException {
+        return plugin.getCategoryPageName(category, context);
+    }
+
 }

Modified: xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/test/java/org/gelc/xwiki/plugins/mime/MimeTypePluginTest.java
===================================================================
--- xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/test/java/org/gelc/xwiki/plugins/mime/MimeTypePluginTest.java	2006-10-20 01:28:58 UTC (rev 1412)
+++ xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/test/java/org/gelc/xwiki/plugins/mime/MimeTypePluginTest.java	2006-10-20 01:36:21 UTC (rev 1413)
@@ -25,6 +25,7 @@
 import com.xpn.xwiki.test.HibernateTestCase;
 import com.xpn.xwiki.web.XWikiServletURLFactory;
 
+import java.io.IOException;
 import java.net.URL;
 
 
@@ -43,12 +44,22 @@
         mtmng.add("image/jpeg", "picture(photo)", "jpg");
         mtmng.add("application/msword", "document", "doc");
 
-        assertEquals("document", mtmng.getCategoryByExtension("doc").getCategory());
-        assertEquals("document", mtmng.getCategoryByMimetype("application/msword").getCategory());
+        assertEquals("document", mtmng.getCategoryByExtension("doc").getTitle());
+        assertEquals("document", mtmng.getCategoryByMimetype("application/msword").getTitle());
 
-        assertEquals("picture(photo)", mtmng.getCategoryByExtension("gif").getCategory());
-        assertEquals("picture(photo)", mtmng.getCategoryByMimetype("image/jpeg").getCategory());
+        assertEquals("picture(photo)", mtmng.getCategoryByExtension("gif").getTitle());
+        assertEquals("picture(photo)", mtmng.getCategoryByMimetype("image/jpeg").getTitle());
 
         assertEquals(2, mtmng.getCategories().size());
     }
+
+   /* public void testImport() throws IOException, XWikiException {
+        MimeTypePluginAPI mtmng = (MimeTypePluginAPI) xwiki.getPluginApi(MimeTypeConstant.PLUGIN_NAME, context);
+
+        mtmng.importMimeType("/metadata.csv");
+        assertEquals("picture(photo)", mtmng.getCategoryByExtension("gif").getTitle());
+        assertEquals("document", mtmng.getCategoryByMimetype("application/msword").getTitle());
+
+    }*/
+
 }





More information about the Xwiki-notifications mailing list