--- /dev/null
+// $Id$\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
+package eu.etaxonomy.cdm.io.pesi.out;\r
+\r
+import java.sql.SQLException;\r
+import java.util.List;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.springframework.stereotype.Component;\r
+import org.springframework.transaction.TransactionStatus;\r
+\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.DbTimePeriodMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.out.mapper.MethodMapper;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @author e.-m.lee\r
+ * @date 23.02.2010\r
+ *\r
+ */\r
+@Component\r
+@SuppressWarnings("unchecked")\r
+public class PesiNoteExport extends PesiExportBase<DescriptionBase> {\r
+ private static final Logger logger = Logger.getLogger(PesiTaxonExport.class);\r
+ private static final Class<? extends CdmBase> standardMethodParameter = DescriptionBase.class;\r
+\r
+ private static int modCount = 1000;\r
+ private static final String dbTableName = "Note";\r
+ private static final String pluralString = "Notes";\r
+\r
+ public PesiNoteExport() {\r
+ super();\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.DbExportBase#getStandardMethodParameter()\r
+ */\r
+ @Override\r
+ public Class<? extends CdmBase> getStandardMethodParameter() {\r
+ return standardMethodParameter;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IoStateBase)\r
+ */\r
+ @Override\r
+ protected boolean doCheck(PesiExportState state) {\r
+ boolean result = true;\r
+ return result;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doInvoke(eu.etaxonomy.cdm.io.common.IoStateBase)\r
+ */\r
+ @Override\r
+ protected boolean doInvoke(PesiExportState state) {\r
+ try {\r
+ logger.info("Start: Make " + pluralString + " ...");\r
+ \r
+ // Stores whether this invoke was successful or not.\r
+ boolean success = true ;\r
+ \r
+ // PESI: Clear the database table Note.\r
+ doDelete(state);\r
+ \r
+ // Start transaction\r
+ TransactionStatus txStatus = startTransaction(true);\r
+ \r
+ // CDM: Get all DescriptionElements\r
+ List<DescriptionBase> list = getDescriptionService().list(null, 100000000, 0, null, null);\r
+ \r
+ // Get specific mappings: (CDM) DescriptionElement -> (PESI) Note\r
+ PesiExportMapping mapping = getMapping();\r
+ \r
+ // Initialize the db mapper\r
+ mapping.initialize(state);\r
+ \r
+ // PESI: Create the Notes\r
+ int count = 0;\r
+ for (DescriptionBase<?> description : list) {\r
+ doCount(count++, modCount, pluralString);\r
+ success &= mapping.invoke(description);\r
+ }\r
+ \r
+ // Commit transaction\r
+ commitTransaction(txStatus);\r
+ logger.info("End: Make " + pluralString + " ..." + getSuccessString(success));\r
+ \r
+ return success;\r
+ } catch(SQLException e) {\r
+ e.printStackTrace();\r
+ logger.error(e.getMessage());\r
+ return false;\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Deletes all entries of database tables related to <code>Note</code>.\r
+ * @param state The PesiExportState\r
+ * @return Whether the delete operation was successful or not.\r
+ */\r
+ protected boolean doDelete(PesiExportState state) {\r
+ PesiExportConfigurator pesiConfig = (PesiExportConfigurator) state.getConfig();\r
+ \r
+ String sql;\r
+ Source destination = pesiConfig.getDestination();\r
+\r
+ // Clear Note\r
+ sql = "DELETE FROM " + dbTableName;\r
+ destination.setQuery(sql);\r
+ destination.update(sql);\r
+ return true;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IoStateBase)\r
+ */\r
+ @Override\r
+ protected boolean isIgnore(PesiExportState state) {\r
+ // TODO Auto-generated method stub\r
+ return false;\r
+ }\r
+\r
+ /**\r
+ * Returns the <code>Note_1</code> attribute.\r
+ * @param description The {@link DescriptionBase Description}.\r
+ * @return The <code>Note_1</code> attribute.\r
+ * @see MethodMapper\r
+ */\r
+ @SuppressWarnings("unused")\r
+ private static String getNote_1(DescriptionBase<?> description) {\r
+ // TODO\r
+ return null;\r
+ }\r
+\r
+ /**\r
+ * Returns the <code>Note_2</code> attribute.\r
+ * @param description The {@link DescriptionBase Description}.\r
+ * @return The <code>Note_2</code> attribute.\r
+ * @see MethodMapper\r
+ */\r
+ @SuppressWarnings("unused")\r
+ private static String getNote_2(DescriptionBase<?> description) {\r
+ // TODO\r
+ return null;\r
+ }\r
+\r
+ /**\r
+ * Returns the <code>NoteCategoryFk</code> attribute.\r
+ * @param description The {@link DescriptionBase Description}.\r
+ * @return The <code>NoteCategoryFk</code> attribute.\r
+ * @see MethodMapper\r
+ */\r
+ @SuppressWarnings("unused")\r
+ private static String getNoteCategoryFk(DescriptionBase<?> description) {\r
+ // TODO\r
+ return null;\r
+ }\r
+\r
+ /**\r
+ * Returns the <code>NoteCategoryCache</code> attribute.\r
+ * @param description The {@link DescriptionBase Description}.\r
+ * @return The <code>NoteCategoryCache</code> attribute.\r
+ * @see MethodMapper\r
+ */\r
+ @SuppressWarnings("unused")\r
+ private static String getNoteCategoryCache(DescriptionBase<?> description) {\r
+ // TODO\r
+ return null;\r
+ }\r
+\r
+ /**\r
+ * Returns the <code>LanguageFk</code> attribute.\r
+ * @param description The {@link DescriptionBase Description}.\r
+ * @return The <code>LanguageFk</code> attribute.\r
+ * @see MethodMapper\r
+ */\r
+ @SuppressWarnings("unused")\r
+ private static String getLanguageFk(DescriptionBase<?> description) {\r
+ // TODO\r
+ return null;\r
+ }\r
+\r
+ /**\r
+ * Returns the <code>LanguageCache</code> attribute.\r
+ * @param description The {@link DescriptionBase Description}.\r
+ * @return The <code>LanguageCache</code> attribute.\r
+ * @see MethodMapper\r
+ */\r
+ @SuppressWarnings("unused")\r
+ private static String getLanguageCache(DescriptionBase<?> description) {\r
+ // TODO\r
+ return null;\r
+ }\r
+\r
+ /**\r
+ * Returns the <code>Region</code> attribute.\r
+ * @param description The {@link DescriptionBase Description}.\r
+ * @return The <code>Region</code> attribute.\r
+ * @see MethodMapper\r
+ */\r
+ @SuppressWarnings("unused")\r
+ private static String getRegion(DescriptionBase<?> description) {\r
+ // TODO\r
+ return null;\r
+ }\r
+\r
+ /**\r
+ * Returns the <code>TaxonFk</code> attribute.\r
+ * @param description The {@link DescriptionBase Description}.\r
+ * @return The <code>TaxonFk</code> attribute.\r
+ * @see MethodMapper\r
+ */\r
+ @SuppressWarnings("unused")\r
+ private static String getTaxonFk(DescriptionBase<?> description) {\r
+ // TODO\r
+ return null;\r
+ }\r
+\r
+ /**\r
+ * Returns the <code>LastAction</code> attribute.\r
+ * @param description The {@link DescriptionBase Description}.\r
+ * @return The <code>LastAction</code> attribute.\r
+ * @see MethodMapper\r
+ */\r
+ @SuppressWarnings("unused")\r
+ private static String getLastAction(DescriptionBase<?> description) {\r
+ // TODO\r
+ return null;\r
+ }\r
+\r
+ /**\r
+ * Returns the CDM to PESI specific export mappings.\r
+ * @return The {@link PesiExportMapping PesiExportMapping}.\r
+ */\r
+ private PesiExportMapping getMapping() {\r
+ PesiExportMapping mapping = new PesiExportMapping(dbTableName);\r
+ \r
+// mapping.addMapper(IdMapper.NewInstance("NoteId"));\r
+ mapping.addMapper(MethodMapper.NewInstance("Note_1", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("Note_2", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("NoteCategoryFk", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("NoteCategoryCache", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("LanguageFk", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("LanguageCache", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("Region", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("TaxonFk", this));\r
+ mapping.addMapper(MethodMapper.NewInstance("LastAction", this));\r
+ mapping.addMapper(DbTimePeriodMapper.NewInstance("updated", "LastActionDate"));\r
+\r
+ return mapping;\r
+ }\r
+\r
+}\r