buildframework/helium/sf/java/metadata/src/com/nokia/helium/metadata/ant/taskdefs/MetaDataDeleteTask.java
--- a/buildframework/helium/sf/java/metadata/src/com/nokia/helium/metadata/ant/taskdefs/MetaDataDeleteTask.java Wed Jun 16 16:51:40 2010 +0300
+++ b/buildframework/helium/sf/java/metadata/src/com/nokia/helium/metadata/ant/taskdefs/MetaDataDeleteTask.java Fri Aug 13 14:59:05 2010 +0300
@@ -17,15 +17,25 @@
package com.nokia.helium.metadata.ant.taskdefs;
-import org.apache.tools.ant.types.FileSet;
-
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Task;
+import java.io.File;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
import java.util.Vector;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.log4j.Logger;
-import com.nokia.helium.metadata.db.*;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.Resource;
+import org.apache.tools.ant.types.ResourceCollection;
+
+import com.nokia.helium.metadata.FactoryManager;
+import com.nokia.helium.metadata.MetadataException;
+import com.nokia.helium.metadata.model.metadata.LogFile;
+import com.nokia.helium.metadata.model.metadata.LogFileDAO;
/**
* This task provide a way to delete the data from db for a log file set.
@@ -41,90 +51,95 @@
*/
public class MetaDataDeleteTask extends Task {
- private static Logger log = Logger.getLogger(MetaDataDeleteTask.class);
-
- private String database;
+ private File database;
private boolean failOnError = true;
- private Vector<FileSet> fileSetList = new Vector<FileSet>();
+ private List<ResourceCollection> resourceCollections = new Vector<ResourceCollection>();
/**
* Helper function to set the database parameter
*
* @ant.required
*/
- public void setDatabase(String dbFile) {
- database = dbFile;
- }
-
- public void setFailOnError(String failNotify) {
- if (failNotify.equals("false")) {
- failOnError = false;
- }
+ public void setDatabase(File database) {
+ this.database = database;
}
/**
- * Updates the list of filelist from the input fileset.
- * @param fileSetList input fileset list
- * @return the matched files including the base dir.
+ * Defines if the task should fail on error.
+ * @param failNotify
+ * @ant.not-required Default is true.
*/
- private List<String> getFileListFromFileSet() {
- List<String> fileList = new ArrayList<String>();
- for (FileSet fs : fileSetList) {
- DirectoryScanner ds = fs.getDirectoryScanner(getProject());
- String[] includedFiles = ds.getIncludedFiles();
- for ( String file : includedFiles ) {
- fileList.add(file);
- log.debug("includedfiles: " + file);
- }
- }
- log.debug("fileList.size" + fileList.size());
- return fileList;
+ public void setFailOnError(boolean failOnError) {
+ this.failOnError = failOnError;
}
/**
- * Adds the fileset (list of input log files to be processed).
- * @param fileSet fileset to be added
+ * Adds any ResourceCollection types from Ant (list of input log files to be processed).
+ * @param resourceCollection the ResourceCollection to be added
*
*/
- public void add(FileSet fileSet) {
- fileSetList.add(fileSet);
+ public void add(ResourceCollection resourceCollection) {
+ resourceCollections.add(resourceCollection);
}
/**
* Helper function to get the database
*
*/
- public String getDatabase() {
+ protected File getDatabase() {
return database;
}
-
+ /**
+ * {@inheritDoc}
+ */
+ @SuppressWarnings("unchecked")
@Override
public void execute() {
- /*
- MetaDataDb metadataDb = null;
+ if (database == null) {
+ throw new BuildException("'database' attribute is not defined.");
+ }
+ EntityManagerFactory factory = null;
+ EntityManager entityManager = null;
try {
- log.debug("Initializing DB: " + database + "to delete");
- log("time before removing entries from db" + new Date());
- metadataDb = new MetaDataDb(database);
- metadataDb.removeEntries(getFileListFromFileSet());
- log("time after removing entries from db" + new Date());
- } catch (BuildException ex1) {
+ factory = FactoryManager.getFactoryManager().getEntityManagerFactory(database);
+ entityManager = factory.createEntityManager();
+ Date before = new Date();
+ log("Time before recording to db: " + before);
+ for (ResourceCollection resourceCollection : resourceCollections) {
+ Iterator<Resource> ri = (Iterator<Resource>)resourceCollection.iterator();
+ while (ri.hasNext()) {
+ File file = new File(ri.next().toString());
+ LogFileDAO logFileDAO = new LogFileDAO();
+ logFileDAO.setEntityManager(entityManager);
+ LogFile logFile = logFileDAO.findByLogName(file);
+ if (logFile != null) {
+ log("Removing log from database: " + file.getAbsolutePath());
+ entityManager.getTransaction().begin();
+ logFileDAO.remove(logFile);
+ entityManager.getTransaction().commit();
+ }
+ }
+ }
+ Date after = new Date();
+ log("Time after recording to db: " + after);
+ log("Elapsed time: " + (after.getTime() - before.getTime()) + " ms");
+ } catch (MetadataException ex) {
+ log(ex.getMessage(), Project.MSG_ERR);
if (failOnError) {
- throw ex1;
- }
- } catch (Exception ex) {
- if (failOnError) {
- throw new BuildException("Failed during writing data to db");
+ throw new BuildException(ex.getMessage(), ex);
}
} finally {
- log.debug("finalizing DB: " + database);
- if (metadataDb != null) {
- metadataDb.finalizeDB();
+ if (entityManager != null) {
+ entityManager.close();
+ entityManager = null;
+ }
+ if (factory != null) {
+ factory.close();
+ factory = null;
}
}
- */
}
}
\ No newline at end of file