adding and using yourkit profiler controller
authorAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Wed, 2 Sep 2009 09:10:13 +0000 (09:10 +0000)
committerAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Wed, 2 Sep 2009 09:10:13 +0000 (09:10 +0000)
22 files changed:
.gitattributes
app-import/src/main/java/eu/etaxonomy/cdm/app/common/CdmDestinations.java
app-import/src/main/java/eu/etaxonomy/cdm/app/faunaEuropaea/FaunaEuropaeaActivator.java
app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/diptera/DipteraActivator.java
app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/diptera/DipteraDistributionParser.java
app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/diptera/DipteraImageActivator.java
cdmlib-io/pom.xml
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaRelTaxonIncludeImport.java
cdmlib-model/pom.xml
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IMultiLanguageText.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/MultilanguageTextHelper.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/TextData.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/media/MediaRepresentation.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/media/MovieFile.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/MediaPortalController.java [new file with mode: 0644]
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/CdmProxyBeanProcessorMatcher.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/MediaBeanProcessor.java [new file with mode: 0644]
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/TermBaseBeanProcessor.java
cdmlib-remote/src/main/webapp/WEB-INF/jsonConfigurations.xml
cdmlib-remote/src/main/webapp/WEB-INF/views.xml
pom.xml

index 1156005c8ed269a5b0637ad487d4754aada7f8fe..fa91ad8623f74861ea4dd9b084b08d74212f6bb2 100644 (file)
@@ -1982,6 +1982,7 @@ cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/HttpStatusMessage
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ManagementController.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/MediaController.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/MediaListController.java -text
+cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/MediaPortalController.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/NameController.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/NameListController.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/NamePortalController.java -text
@@ -2042,6 +2043,7 @@ cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/HibernateJSON
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/HibernateJSONValueProcessorMatcher.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/HibernateProxyBeanProcessor.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/HibernateProxyBeanProcessorMatcher.java -text
+cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/MediaBeanProcessor.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/NameRelationshipBeanProcessor.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/PartialJSONValueProcessor.java -text
 cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/TaxonBeanProcessor.java -text
index d473b54b434df0ab0a762d742832463a1f3d7c57..2d6d7e41f06c2532af9b92bba5b90e9acbba2309 100644 (file)
@@ -164,7 +164,7 @@ public class CdmDestinations {
        //\r
        public static ICdmDataSource cdm_test_andreasK1(){\r
                DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;\r
-               String cdmServer = "192.168.2.10";\r
+               String cdmServer = "127.0.0.1"; //FIXME"192.168.2.10";\r
                String cdmDB = "cdm_test_andreasK1";\r
                String cdmUserName = "edit";\r
                return makeDestination(cdmServer, cdmDB, -1, cdmUserName, null);\r
index 0e01b8018a0a0a52300c2bed7409a7ad93b37b1c..c17d44139fe0b346f3afa2622120a31eb4ec4a86 100644 (file)
@@ -29,7 +29,7 @@ public class FaunaEuropaeaActivator {
        private static final Logger logger = Logger.getLogger(FaunaEuropaeaActivator.class);\r
 \r
        static final Source faunaEuropaeaSource = FaunaEuropaeaSources.faunEu();\r
-       static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_jaxb2();\r
+       static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_andreasK1();\r
        \r
        static final CHECK check = CHECK.IMPORT_WITHOUT_CHECK;\r
 //     static DbSchemaValidation dbSchemaValidation = DbSchemaValidation.CREATE;\r
index f9f749f8e844f7bf279ad41deb93daa722c7b504..07d67a6f93f41ff087a5229d46006ee18477dc73 100644 (file)
@@ -49,12 +49,12 @@ public class DipteraActivator {
        //database validation status (create, update, validate ...)\r
        static DbSchemaValidation hbm2dll = DbSchemaValidation.CREATE;\r
        static final Source berlinModelSource = BerlinModelSources.EDIT_Diptera();\r
-       static final ICdmDataSource cdmDestination = CdmDestinations.localH2Diptera();\r
+       static final ICdmDataSource cdmDestination = CdmDestinations.cdm_import_diptera();\r
        static final UUID secUuid = UUID.fromString("06fd671f-1226-4e3b-beca-1959b3b32e20");\r
        static final UUID treeUuid = UUID.fromString("1e3093f6-c761-4e96-8065-2c1334ddd0c1");\r
        static final int sourceSecId = 1000000;\r
        static final UUID featureTreeUuid = UUID.fromString("ae9615b8-bc60-4ed0-ad96-897f9226d568");\r
-       static final Object[] featureKeyList = new Integer[]{1,4,5,10,11,12,13,99}; \r
+       static final Object[] featureKeyList = new Integer[]{1,4,5,10,11,12,13,99}; // TODO remove  13 occurence\r
        \r
        static boolean useTaxonomicTree = true;\r
        //editor - import\r
index 597bcba36e5d898c0e37db9668494592bddbccfb..b5c165d854846ddf78d763909650b65902a85922 100644 (file)
@@ -46,7 +46,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 public class DipteraDistributionParser {\r
        private static final Logger logger = Logger.getLogger(DipteraDistributionParser.class);\r
        \r
-       private static ICdmDataSource cdmDestination = CdmDestinations.localH2Diptera();\r
+       private static ICdmDataSource cdmDestination = CdmDestinations.cdm_local_dipera();\r
        \r
        \r
        final static String epiSplitter = "(\\s+|\\[|\\]|\\(|\\))"; //( ' '+| '(' | ')'| '[' | ']' )\r
index 300de7cc3ae5989427ebe4cfc04d446ceab943da..8220f49cea04ae2e0d799de27717f141f08097cd 100644 (file)
@@ -35,7 +35,8 @@ public class DipteraImageActivator  {
        
        private static final File sourceFile = new File("src/main/resources/images/images_diptera.xls");
 
-       private static final ICdmDataSource cdmDestination = CdmDestinations.localH2Diptera();
+       private static final ICdmDataSource cdmDestination = CdmDestinations.cdm_local_dipera();
+
        
 //     static final UUID secUuid = UUID.fromString("6924c75d-e0d0-4a6d-afb7-3dd8c71195ca");
        
index 698fda2bccf50d9efc3131a086be7b634a13368a..bb56142bb642e0b1ad8bea42dd38c403ac33c0d1 100644 (file)
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
        </dependency>\r
+       <dependency>\r
+               <groupId>com.yourkit</groupId>\r
+               <artifactId>yjp-controller-api-redist</artifactId>\r
+               <version>8.0.1</version>\r
+       </dependency>\r
   </dependencies>\r
 </project>\r
 \r
index bff376f91d82dc831342f53e517a108b241fe8f5..b5785181cbc215695666c7e6b81e801a0876b77c 100644 (file)
@@ -68,6 +68,9 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
 \r
+import com.yourkit.api.Controller;\r
+\r
+\r
 \r
 /**\r
  * @author a.babadshanjan\r
@@ -93,7 +96,9 @@ public class FaunaEuropaeaRelTaxonIncludeImport extends FaunaEuropaeaImportBase
        /* Number of times method buildParentName() has been called for one taxon */\r
        private int callCount = 0;\r
        private Map<Integer, FaunaEuropaeaTaxon> fauEuTaxonMap = new HashMap();\r
-       \r
+\r
+       private static Controller controller;\r
+       private int memSnapshotCnt = 0;\r
 \r
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
@@ -151,27 +156,44 @@ public class FaunaEuropaeaRelTaxonIncludeImport extends FaunaEuropaeaImportBase
        \r
        protected boolean doInvoke(FaunaEuropaeaImportState state) {                            \r
                \r
-               Map<String, MapWrapper<? extends CdmBase>> stores = state.getStores();\r
-               MapWrapper<TaxonBase> taxonStore = (MapWrapper<TaxonBase>)stores.get(ICdmIO.TAXON_STORE);\r
-               taxonStore.makeEmpty();\r
-               MapWrapper<TeamOrPersonBase> authorStore = (MapWrapper<TeamOrPersonBase>)stores.get(ICdmIO.TEAM_STORE);\r
-               authorStore.makeEmpty();\r
-               \r
                boolean success = true;\r
                \r
-               if(logger.isInfoEnabled()) { logger.info("Start making taxonomically included relationships..."); }\r
-               \r
-//             TransactionStatus txStatus = startTransaction();\r
+               // start memory snapshot\r
+               try {\r
+                       controller = new Controller();\r
+                       memSnapshotCnt = 0;\r
 \r
-               success = retrieveChildParentUuidMap(state);\r
-               success = createRelationships(state);\r
+                       memorySnapshot();\r
                \r
-//             commitTransaction(txStatus);\r
-\r
-               logger.info("End making taxa...");\r
+                       Map<String, MapWrapper<? extends CdmBase>> stores = state.getStores();\r
+                       MapWrapper<TaxonBase> taxonStore = (MapWrapper<TaxonBase>)stores.get(ICdmIO.TAXON_STORE);\r
+                       taxonStore.makeEmpty();\r
+                       MapWrapper<TeamOrPersonBase> authorStore = (MapWrapper<TeamOrPersonBase>)stores.get(ICdmIO.TEAM_STORE);\r
+                       authorStore.makeEmpty();\r
+                       \r
+                       if(logger.isInfoEnabled()) { logger.info("Start making taxonomically included relationships..."); }\r
+                       \r
+       //              TransactionStatus txStatus = startTransaction();\r
+       \r
+                       success = retrieveChildParentUuidMap(state);\r
+                       memorySnapshot();\r
+                       success = createRelationships(state);\r
+                       \r
+       //              commitTransaction(txStatus);\r
+       \r
+                       logger.info("End making taxa...");\r
+                       memorySnapshot();\r
+               } catch (Exception e) {\r
+                       logger.error(e);\r
+               }\r
                return success;\r
        }\r
 \r
+       protected void memorySnapshot() throws Exception {\r
+               logger.info("taking memory snapshot " + memSnapshotCnt++);\r
+               controller.captureMemorySnapshot();\r
+       }\r
+\r
        \r
        /** Retrieve child-parent uuid map from CDM DB */\r
        private boolean retrieveChildParentUuidMap(FaunaEuropaeaImportState state) {\r
index 2d0c5e9467840b3eb943c3c77df46eb958d4bf7b..efa23758094be845b8cd40fd2d1544a02587343a 100644 (file)
@@ -18,6 +18,8 @@
       <plugin>
         <artifactId>maven-antrun-plugin</artifactId>
         <executions>
+          <!-- 
+
           <execution>
             <id>aspectj-main</id>
             <phase>process-sources</phase>
                   </sourceroots>
                 </iajc>
               </tasks>
-            </configuration>
-          </execution>
-        </executions>
-        <dependencies>
+          </configuration>
+        </execution>
+                -->
+      </executions>
+      <dependencies>
+      <!--
+
           <dependency>
             <groupId>org.aspectj</groupId>
             <artifactId>aspectjtools</artifactId>
@@ -78,7 +83,8 @@
             <artifactId>aspectjrt</artifactId>
             <version>1.6.3</version>
           </dependency>
-        </dependencies>
+                  -->
+      </dependencies>
       </plugin>
     </plugins>
   </build>
index 2a9730687d7013269e8b4255a395e7e1cf199e8e..7107704e30d91e8411cf87ee9a98a9dcfd378457 100644 (file)
@@ -26,7 +26,8 @@ public interface IMultiLanguageText {
        public LanguageString add(LanguageString languageString);
 
        /**
-        * Iterates on the languages. As soon as there exists a language string for this language in this multilanguage text
+        * Iterates on the languages. As soon as there exists a language string for this language in 
+        * this multilanguage text
         * it is returned.
         * @param languages
         * @return 
index dc37d5b3ccfe42c9e0eac4aa3b11d954229a4c76..24075818a51249bcb421299cd9677badc786307f 100644 (file)
@@ -9,6 +9,10 @@
 \r
 package eu.etaxonomy.cdm.model.common;\r
 \r
+import java.util.Iterator;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
 import javax.persistence.Transient;\r
 import javax.xml.bind.annotation.XmlAccessType;\r
 import javax.xml.bind.annotation.XmlAccessorType;\r
@@ -69,4 +73,40 @@ public class MultilanguageTextHelper {
        public void setLanguageString(LanguageString languageString) {\r
                this.languageString = languageString;\r
        }\r
+       \r
+    /**\r
+        * Returns the LanguageString in the preferred language. Preferred languages\r
+        * are specified by the parameter languages, which receives a list of\r
+        * Language instances in the order of preference. If no representation in\r
+        * any preferred languages is found the method falls back to return the\r
+        * Representation in Language.DEFAULT() and if neccesary further falls back\r
+        * to return the first element found if any.\r
+        * \r
+        * TODO think about this fall-back strategy & \r
+        * see also {@link TermBase#getPreferredRepresentation(List)}\r
+        * \r
+        * @param languages\r
+        * @return\r
+        */\r
+       public static LanguageString getPreferredLanguageString(Map<Language, LanguageString> multilanguageText, List<Language> languages) {\r
+               \r
+               LanguageString languageString = null;\r
+               if(languages != null){\r
+                       for(Language language : languages) {\r
+                               languageString = multilanguageText.get(language);\r
+                               if(languageString != null){\r
+                                       return languageString;\r
+                               }\r
+                       }\r
+               }\r
+               languageString = multilanguageText.get(Language.DEFAULT());\r
+               \r
+               if(languageString == null && multilanguageText.size() > 0){\r
+                       Iterator<LanguageString> it = multilanguageText.values().iterator();\r
+                       if(it.hasNext()){\r
+                               languageString = it.next();\r
+                       }\r
+               }\r
+               return languageString;\r
+       }\r
 }\r
index 578fd9c369c16d17349e86949ffb572d3a2dcac0..d6273b90ddd6da57960c2714a952d56f65156c69 100644 (file)
@@ -35,9 +35,12 @@ import org.hibernate.envers.Audited;
 import org.hibernate.search.annotations.Indexed;
 import org.hibernate.search.annotations.IndexedEmbedded;
 
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.jaxb.MultilanguageTextAdapter;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;
+import eu.etaxonomy.cdm.model.common.MultilanguageText;
+import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;
 import eu.etaxonomy.cdm.model.common.Representation;
 import eu.etaxonomy.cdm.model.common.TermBase;
 
@@ -187,7 +190,9 @@ public class TextData extends DescriptionElementBase {
         * 
         * @param languages
         * @return
+        * @deprecated replaced by static method  {@link MultilanguageTextHelper#getPreferredLanguageString(Map, List)}
         */
+       @Deprecated
        public LanguageString getPreferredLanguageString(List<Language> languages) {
                
                LanguageString languageString = null;
index 5cef5df8f1ac8af9160c21a78ea0f67a5273bba4..96c2c709a146589cdd2fd2855bc85e3230b4f1b5 100644 (file)
@@ -29,7 +29,6 @@ import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlIDREF;
 import javax.xml.bind.annotation.XmlSchemaType;
-import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.log4j.Logger;
index 0c9783239840176af887ff054898c589417c6f8d..41e230000de759036d6e7ea7e42d89d4d5091932 100644 (file)
@@ -68,12 +68,17 @@ public class MovieFile extends MediaRepresentationPart {
        }
        
        
+       /**
+        * The Length of the movie in seconds
+        * 
+        * @return
+        */
        public int getDuration(){
                return this.duration;
        }
 
        /**
-        * 
+        * Sets the Length of the movie in seconds
         * @param duration    duration
         */
        public void setDuration(int duration){
index 6a174dfeb43ecea9a5a478a762b406fdcef79b6f..bf869f910eb6c8b0f1ace4423fbd326ed5f038d4 100644 (file)
@@ -140,7 +140,9 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
         */\r
        @Test\r
        @DataSet\r
+       @Ignore\r
        public void testInit() {\r
+               logger.warn("testInit()");\r
                assertNotNull("Instance of ITaxonDao expected",taxonDao);\r
                assertNotNull("Instance of IReferenceDao expected",referenceDao);\r
        }\r
@@ -152,6 +154,7 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
         */\r
        @Test\r
        @DataSet\r
+       @Ignore\r
        public void testGetRootTaxa() {\r
                ReferenceBase sec1 = referenceDao.findById(1);\r
                assert sec1 != null : "sec1 must exist";\r
@@ -266,6 +269,7 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
                Synonym synAtroposAgassiz = (Synonym)taxonDao.findByUuid(atroposAgassiz);\r
                Taxon taxonRethera = (Taxon)taxonDao.findByUuid(rethera);\r
                taxonRethera.addSynonym(synAtroposAgassiz, SynonymRelationshipType.SYNONYM_OF());\r
+               logger.warn("addSynonym(..)");\r
                \r
                Synonym synAtroposLeach = (Synonym)taxonDao.findByUuid(atroposLeach);\r
                Taxon taxonRetheraSecCdmtest = (Taxon)taxonDao.findByUuid(retheraSecCdmtest);\r
diff --git a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/MediaPortalController.java b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/MediaPortalController.java
new file mode 100644 (file)
index 0000000..06b9aab
--- /dev/null
@@ -0,0 +1,73 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.remote.controller;\r
+\r
+import java.io.IOException;\r
+import java.util.Arrays;\r
+import java.util.List;\r
+\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.servlet.http.HttpServletResponse;\r
+\r
+import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.stereotype.Controller;\r
+import org.springframework.web.bind.annotation.RequestMapping;\r
+import org.springframework.web.bind.annotation.RequestMethod;\r
+\r
+import eu.etaxonomy.cdm.api.service.IMediaService;\r
+import eu.etaxonomy.cdm.model.media.Media;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+\r
+/**\r
+ * TODO write controller documentation\r
+ * \r
+ * @author a.kohlbecker\r
+ * @date 24.03.2009\r
+ */\r
+\r
+@Controller\r
+@RequestMapping(value = {"/*/portal/media/*","/*/portal/media/*/annotation"})\r
+public class MediaPortalController extends AnnotatableController<Media, IMediaService>\r
+{\r
+\r
+       private static final List<String> MEDIA_INIT_STRATEGY = Arrays.asList(new String []{\r
+                       "$",\r
+                       "rights.type",\r
+                       "rights.agent",\r
+                       "representations.parts",\r
+       });\r
+\r
+       public MediaPortalController(){\r
+               super();\r
+               setUuidParameterPattern("^/(?:[^/]+)/portal/media/([^/?#&\\.]+).*");\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.remote.controller.GenericController#setService(eu.etaxonomy.cdm.api.service.IService)\r
+        */\r
+       @Autowired\r
+       @Override\r
+       public void setService(IMediaService service) {\r
+               this.service = service;\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.remote.controller.BaseController#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)\r
+        */\r
+       @Override\r
+       @RequestMapping(method = RequestMethod.GET)\r
+       public Media doGet(HttpServletRequest request, HttpServletResponse response)throws IOException {\r
+               logger.info("doGet()");\r
+               Media media = getCdmBase(request, response, MEDIA_INIT_STRATEGY, Media.class);\r
+               return media;\r
+       }\r
+\r
+}\r
index 0297d45b94bc7547d800c00693ef2edfd201ec0e..da9ae141e288f0c27fbf86fb3b03da62fedb0058 100644 (file)
@@ -17,6 +17,7 @@ import org.hibernate.proxy.HibernateProxy;
 import net.sf.json.processors.JsonBeanProcessorMatcher;\r
 import eu.etaxonomy.cdm.model.common.OrderedTermBase;\r
 import eu.etaxonomy.cdm.model.common.TermBase;\r
+import eu.etaxonomy.cdm.model.media.Media;\r
 import eu.etaxonomy.cdm.model.name.NameRelationship;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
@@ -61,6 +62,9 @@ public class CdmProxyBeanProcessorMatcher extends JsonBeanProcessorMatcher {
                if (TaxonRelationship.class.isAssignableFrom(target)) {\r
                        return DEFAULT.getMatch(TaxonRelationship.class, set);\r
                }\r
+               if (Media.class.isAssignableFrom(target)) {\r
+                       return DEFAULT.getMatch(Media.class, set);\r
+               }\r
                return DEFAULT.getMatch(target, set);\r
        }\r
        \r
diff --git a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/MediaBeanProcessor.java b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/MediaBeanProcessor.java
new file mode 100644 (file)
index 0000000..e2d0d50
--- /dev/null
@@ -0,0 +1,116 @@
+// $Id: TaxonBeanProcessor.java 5561 2009-04-07 12:25:33Z a.kohlbecker $\r
+/**\r
+ * Copyright (C) 2009 EDIT\r
+ * European Distributed Institute of Taxonomy \r
+ * http://www.e-taxonomy.eu\r
+ * \r
+ * The contents of this file are subject to the Mozilla Public License Version 1.1\r
+ * See LICENSE.TXT at the top of this package for the full license terms.\r
+ */\r
+\r
+package eu.etaxonomy.cdm.remote.json.processor;\r
+\r
+import java.util.Arrays;\r
+import java.util.List;\r
+\r
+import net.sf.json.JSONObject;\r
+import net.sf.json.JsonConfig;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hibernate.Hibernate;\r
+\r
+import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.LanguageString;\r
+import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;\r
+import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
+import eu.etaxonomy.cdm.model.common.RelationshipTermBase;\r
+import eu.etaxonomy.cdm.model.common.Representation;\r
+import eu.etaxonomy.cdm.model.common.TermBase;\r
+import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.media.Media;\r
+import eu.etaxonomy.cdm.remote.l10n.LocaleContext;\r
+\r
+/**\r
+ * @author a.kohlbecker\r
+ *\r
+ */\r
+public class MediaBeanProcessor extends AbstractCdmBeanProcessor<Media> {\r
+\r
+       public static final Logger logger = Logger.getLogger(MediaBeanProcessor.class);\r
+\r
+       private static final List<String> IGNORE_LIST = Arrays.asList(new String[] { \r
+                       "title",\r
+                       "description",\r
+                       });\r
+\r
+       private boolean replaceTitle = false;\r
+       \r
+       private boolean replaceDescription = false;\r
+\r
+       public boolean isReplaceTitle() {\r
+               return replaceTitle;\r
+       }\r
+\r
+       public void setReplaceTitle(boolean replaceTitle) {\r
+               this.replaceTitle = replaceTitle;\r
+       }\r
+\r
+       public boolean isReplaceDescription() {\r
+               return replaceDescription;\r
+       }\r
+\r
+       public void setReplaceDescription(boolean replaceDescription) {\r
+               this.replaceDescription = replaceDescription;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.remote.json.processor.AbstractCdmBeanProcessor#getIgnorePropNames()\r
+        */\r
+       @Override\r
+       public List<String> getIgnorePropNames() {\r
+               return IGNORE_LIST;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.remote.json.processor.AbstractCdmBeanProcessor#processBeanSecondStep(eu.etaxonomy.cdm.model.common.CdmBase, net.sf.json.JSONObject, net.sf.json.JsonConfig)\r
+        */\r
+       @Override\r
+       public JSONObject processBeanSecondStep(Media media, JSONObject json,   JsonConfig jsonConfig) {\r
+               \r
+               List<Language> languages = LocaleContext.getLanguages();\r
+               LanguageString langString;\r
+               \r
+               // title\r
+               if(Hibernate.isInitialized(media.getTitle())){\r
+                       langString = MultilanguageTextHelper.getPreferredLanguageString(media.getTitle(), languages);\r
+                       if(langString != null){\r
+                               if(langString.getText() != null && langString.getText().length() != 0){\r
+                                       json.element("title_L10n", langString.getText());\r
+                               } \r
+                       }\r
+                       if(!replaceTitle){\r
+                               json.element("title", media.getTitle(), jsonConfig);\r
+                       }\r
+               } else {\r
+                       logger.debug("title of media not initialized  " + media.getUuid().toString());\r
+               }\r
+               \r
+               // description\r
+               if(Hibernate.isInitialized(media.getDescription())){\r
+                       langString = MultilanguageTextHelper.getPreferredLanguageString(media.getDescription(), languages);\r
+                       if(langString != null){\r
+                               if(langString.getText() != null && langString.getText().length() != 0){\r
+                                       json.element("description_L10n", langString.getText());\r
+                               } \r
+                       }\r
+                       if(!replaceDescription){\r
+                               json.element("description", media.getDescription(), jsonConfig);\r
+                       }\r
+               } else {\r
+                       logger.debug("description of media not initialized  " + media.getUuid().toString());\r
+               }\r
+               \r
+               return json;\r
+       }\r
+       \r
+}\r
index 641009f6a1d023f51e8d321a1f8299380db4b2ba..7a3f209592783ac5e41cd86cfac0755bde94e2a5 100644 (file)
@@ -39,7 +39,7 @@ public class TermBaseBeanProcessor extends AbstractCdmBeanProcessor<TermBase> {
                        "representations",\r
                        "inversRepresentations",\r
                        "terms",\r
-                       "partOf" // exclude partof to avoid  lazy loading exceptions\r
+                       "partOf" // exclude partOf to avoid  lazy loading exceptions\r
                        });\r
 \r
        private boolean replaceRepresentations = false;\r
index d3bff9f1c3dc213141adc0f89576efb8adf372ec..1f1e4b735841e190a2b64341948ea300aeddfba6 100644 (file)
                        <property name="replaceMultilanguageText" value="true" />\r
                     </bean>\r
                 </entry>\r
+                <entry key="eu.etaxonomy.cdm.model.media.Media">\r
+                    <bean class="eu.etaxonomy.cdm.remote.json.processor.MediaBeanProcessor">\r
+                       <property name="replaceTitle" value="true" />\r
+                       <property name="replaceDescription" value="true" />\r
+                    </bean>\r
+                </entry>\r
             </map>\r
         </property>\r
         <property name="jsonPropertyFilters">\r
index ecfed80996ea0678a51a35c4ea1bab664abbf1b8..d42a8ac2c30c1cc2107942ce293cca149d71f8c2 100644 (file)
     </bean>
     
     <!-- taxonomy service -->
-<!--    <bean name="**/taxonomy.xml **/taxonomy/*.xml **/taxonomy/**/*.xml" class="eu.etaxonomy.cdm.remote.view.JsonView">-->
-<!--        <property name="type" value="XML" />-->
-<!--          <property name="xsl" value="humane.xsl" />  -->
-<!--        <property name="jsonConfig" ref="jsonConfigTaxonomy" />-->
-<!--    </bean>-->
-<!--    <bean name="**/taxonomy.json **/taxonomy/*.json **/taxonomy/**/*.json" class="eu.etaxonomy.cdm.remote.view.JsonView">-->
-<!--        <property name="jsonConfig" ref="jsonConfigTaxonomy" />-->
-<!--    </bean>-->
     <bean name="**/taxontree.xml **/taxontree/*.xml **/taxontree/**/*.xml" class="eu.etaxonomy.cdm.remote.view.JsonView">
         <property name="type" value="XML" />
         <!--  <property name="xsl" value="humane.xsl" />  -->
diff --git a/pom.xml b/pom.xml
index ffd7ba11aa792d4f3abaa6fbc9f86b3a7e164e56..f33857646cb2c9f5084fad075d382b27337a1443 100644 (file)
--- a/pom.xml
+++ b/pom.xml
                        <id>EditRepository</id>\r
                        <url>http://wp5.e-taxonomy.eu/cdmlib/mavenrepo/</url>\r
                </repository>\r
-        <!-- apache incubating repository -->\r
+    <!-- apache incubating repository -->\r
                <repository>\r
                        <id>ApacheIncubating</id>\r
                        <url>http://people.apache.org/repo/m2-incubating-repository/</url>\r
                </repository>\r
                <!-- Neccessary for hibernate-envers -->\r
-        <repository>\r
-          <releases>\r
-                 <enabled>true</enabled>\r
-                 <updatePolicy>always</updatePolicy>\r
-                 <checksumPolicy>warn</checksumPolicy>\r
-               </releases>\r
-               <snapshots>\r
-                 <enabled>false</enabled>\r
-                 <updatePolicy>never</updatePolicy>\r
-                 <checksumPolicy>fail</checksumPolicy>\r
-               </snapshots>\r
-               <id>jboss-repository</id>\r
-               <name>JBoss Repository</name>\r
-               <url>http://repository.jboss.com/maven2</url>\r
-             </repository>\r
+               <repository>\r
+                       <releases>\r
+                               <enabled>true</enabled>\r
+                               <updatePolicy>always</updatePolicy>\r
+                               <checksumPolicy>warn</checksumPolicy>\r
+                       </releases>\r
+                       <snapshots>\r
+                               <enabled>false</enabled>\r
+                               <updatePolicy>never</updatePolicy>\r
+                               <checksumPolicy>fail</checksumPolicy>\r
+                       </snapshots>\r
+                       <id>jboss-repository</id>\r
+                       <name>JBoss Repository</name>\r
+                       <url>http://repository.jboss.com/maven2</url>\r
+               </repository>\r
+               <!-- codehaus mule repository needed for yourkit  -->\r
+               <repository>\r
+                       <id>CodehausMuleRepository</id>\r
+                       <url>http://dist.codehaus.org/mule/dependencies/maven2/</url>\r
+               </repository>\r
        </repositories>\r
 \r
        <!-- **** PLUGINS **** -->\r
                        <version>2000.3</version>\r
                </dependency>\r
 -->\r
-        <dependency>\r
-               <groupId>oracle</groupId>\r
-               <artifactId>ojdbc14</artifactId>\r
-               <version>10.2.0.2</version>\r
-        </dependency>\r
-        <dependency>\r
-               <groupId>oracle</groupId>\r
-               <artifactId>ojdbc14</artifactId>\r
-               <version>9i</version>\r
-        </dependency>\r
-        <dependency>\r
-               <groupId>oracle</groupId>\r
-               <artifactId>ojdbc14</artifactId>\r
-               <version>9.2.0.5</version>\r
-        </dependency>\r
-               <dependency>\r
-                       <groupId>com.h2database</groupId>\r
-                       <artifactId>h2</artifactId>\r
-                       <version>1.1.115</version>\r
-               </dependency>\r
-                       \r
+                       <dependency>\r
+                               <groupId>oracle</groupId>\r
+                               <artifactId>ojdbc14</artifactId>\r
+                               <version>10.2.0.2</version>\r
+                       </dependency>\r
+                       <dependency>\r
+                               <groupId>oracle</groupId>\r
+                               <artifactId>ojdbc14</artifactId>\r
+                               <version>9i</version>\r
+                       </dependency>\r
+                       <dependency>\r
+                               <groupId>oracle</groupId>\r
+                               <artifactId>ojdbc14</artifactId>\r
+                               <version>9.2.0.5</version>\r
+                       </dependency>\r
+                       <dependency>\r
+                               <groupId>com.h2database</groupId>\r
+                               <artifactId>h2</artifactId>\r
+                               <version>1.1.115</version>\r
+                       </dependency>\r
+                       <!-- yourkit profiler api controller (used in ..)-->  \r
+                       <dependency>\r
+                               <groupId>com.yourkit</groupId>\r
+                               <artifactId>yjp-controller-api-redist</artifactId>\r
+                               <version>8.0.1</version>\r
+                       </dependency>\r
                </dependencies>\r
        </dependencyManagement>\r
 \r