buildframework/helium/sf/java/metadata/src/com/nokia/helium/metadata/ant/types/AntLogMetaDataInput.java
--- a/buildframework/helium/sf/java/metadata/src/com/nokia/helium/metadata/ant/types/AntLogMetaDataInput.java Wed Jun 16 16:51:40 2010 +0300
+++ b/buildframework/helium/sf/java/metadata/src/com/nokia/helium/metadata/ant/types/AntLogMetaDataInput.java Fri Aug 13 14:59:05 2010 +0300
@@ -17,12 +17,26 @@
package com.nokia.helium.metadata.ant.types;
-import java.io.*;
-import org.apache.tools.ant.BuildException;
-import java.util.*;
-import org.apache.log4j.Logger;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.Map;
+import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import java.util.regex.Matcher;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+
+import com.nokia.helium.metadata.AutoCommitEntityManager;
+import com.nokia.helium.metadata.MetadataException;
+import com.nokia.helium.metadata.model.metadata.Component;
+import com.nokia.helium.metadata.model.metadata.LogFile;
+import com.nokia.helium.metadata.model.metadata.MetadataEntry;
+import com.nokia.helium.metadata.model.metadata.Severity;
+import com.nokia.helium.metadata.model.metadata.SeverityDAO;
/**
* This Type is to specify and use the ant logparser type to parse and store the data.
@@ -42,100 +56,78 @@
*
* @ant.task name="antmetadatainput" category="Metadata"
*/
-public class AntLogMetaDataInput extends TextLogMetaDataInput {
+public class AntLogMetaDataInput extends AbstractComponentBaseMetadataInput {
- private Logger log = Logger.getLogger(AntLogMetaDataInput.class);
-
+ public static final String DEFAULT_COMPONENT = "Ant";
private Pattern antTargetPattern = Pattern.compile("^([^\\s=\\[\\]]+):$");
-
- private String currentComponent;
-
- private boolean entryCreated;
+ private EntityManager entityManager;
/**
- * Constructor
+ * {@inheritDoc}
*/
- public AntLogMetaDataInput() {
+ @Override
+ public void extract(EntityManagerFactory factory, File file)
+ throws MetadataException {
+ Component currentComponent = null;
+ entityManager = factory.createEntityManager();
+ AutoCommitEntityManager autoCommitEM = new AutoCommitEntityManager(factory);
+ try {
+ // Loading the available priorities
+ SeverityDAO severityDao = new SeverityDAO();
+ severityDao.setEntityManager(entityManager);
+ Map<String, Severity> priorities = severityDao.getSeverities();
+
+ // Creating the filename
+ LogFile logFile = getLogFile(entityManager, file);
+
+ // Parsing the log file
+ BufferedReader reader = new BufferedReader(new FileReader(file));
+ String logText = null;
+ int lineNumber = 0;
+ while ((logText = reader.readLine()) != null) {
+ lineNumber++;
+ String line = logText.replaceFirst("^[ ]*\\[.+?\\][ ]*", "");
+
+ Matcher matcher = antTargetPattern.matcher(line);
+ if (matcher.matches()) {
+ currentComponent = getComponent(matcher.group(1), logFile);
+ } else {
+ if (currentComponent == null) {
+ currentComponent = getDefaultComponent(logFile);
+ }
+ SeverityEnum.Severity severity = getSeverity(line);
+ if (severity != SeverityEnum.Severity.NONE) {
+ MetadataEntry entry = new MetadataEntry();
+ entry.setLogFile(logFile);
+ entry.setLineNumber(lineNumber);
+ entry.setSeverity(autoCommitEM.merge(priorities.get(severity.toString())));
+ entry.setText(line);
+ entry.setComponent(autoCommitEM.merge(currentComponent));
+ autoCommitEM.persist(entry);
+ }
+ }
+ }
+ reader.close();
+ } catch (FileNotFoundException ex) {
+ throw new MetadataException(ex.getMessage(), ex);
+ } catch (IOException ex) {
+ throw new MetadataException(ex.getMessage(), ex);
+ } finally {
+ if (autoCommitEM != null) {
+ autoCommitEM.close();
+ }
+ if (entityManager != null) {
+ entityManager.close();
+ }
+ clear();
+ }
}
/**
- * Function to check from the input stream if is there any entries available.
- * @return true if there are any entry available otherwise false.
+ * {@inheritDoc}
*/
- public boolean isEntryCreated(File currentFile) {
- String exceptions = "";
- int lineNumber = getLineNumber();
- BufferedReader currentReader = getCurrentReader();
- try {
- if (currentReader == null) {
- setLineNumber(0);
- log.debug("Current Text log file name:" + currentFile);
- log.debug("Processing file: " + currentFile);
- currentReader = new BufferedReader(new FileReader(currentFile));
- setCurrentReader(currentReader);
- }
- String logText = "";
- while ((logText = currentReader.readLine()) != null) {
- Matcher match = antTargetPattern.matcher(logText);
- if (match.matches()) {
- if (currentComponent != null && !entryCreated) {
- addEntry("DEFAULT", currentComponent, currentFile.toString(),
- 0, "" );
- entryCreated = true;
- return true;
- }
- entryCreated = false;
- currentComponent = match.group(1);
- }
- logText = logText.replaceFirst("^[ ]*\\[.+?\\][ ]*", "");
- String severity = getSeverity(logText);
- if (severity != null) {
- entryCreated = true;
- // If there is no current component which means
- // it is a redirected output, using file name as comp name
- if (currentComponent == null ) {
- currentComponent = currentFile.getName();
- }
- addEntry(severity, currentComponent, currentFile.toString(),
- lineNumber, logText );
- logText = "";
- return true;
- }
- }
- currentReader.close();
- currentReader = null;
- setCurrentReader(currentReader);
- if (isAdditionalEntry()) {
- return true;
- }
- } catch (FileNotFoundException ex) {
- log.debug("FileNotFoundException in AntLogMetadata", ex);
- try {
- currentReader.close();
- } catch ( IOException iex) {
- // We are Ignoring the errors as no need to fail the build.
- log.debug("Exception in closing reader", iex);
- currentReader = null;
- setCurrentReader(null);
- exceptions = exceptions + ex.getMessage() + "\n";
- return false;
- }
- } catch (IOException ex) {
- log.debug("IOException in AntLogMetadata", ex);
- try {
- currentReader.close();
- } catch ( IOException iex) {
- // We are Ignoring the errors as no need to fail the build.
- log.debug("Exception in closing reader", iex);
- currentReader = null;
- setCurrentReader(null);
- exceptions = exceptions + ex.getMessage() + "\n";
- return false;
- }
- }
- if (!exceptions.equals("")) {
- throw new BuildException(exceptions);
- }
- return false;
+ @Override
+ protected EntityManager getEntityManager() {
+ return entityManager;
}
}
\ No newline at end of file