package org.ngbw.utils; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.sql.SQLException; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.commons.io.FileUtils; import org.apache.log4j.Logger; import org.ngbw.sdk.database.RecordField; import org.ngbw.sdk.database.Task; import org.ngbw.sdk.database.TaskInputSourceDocument; import org.ngbw.sdk.database.TaskOutputSourceDocument; import org.ngbw.sdk.database.UserDataItem; import org.ngbw.sdk.database.UserItemDataRecord; /** * * @author Paul Hoover * @author Tony Chen * */ public class DataInspector { private static final Logger logger = Logger.getLogger(DataInspector.class); private static final String INDENT = " "; // public static synchronized void // inspect ( long id ) throws IOException, SQLException // { // UserDataItem inspected = new UserDataItem(id); // // inspect(inspected); // } // protected static synchronized String // buildDirectories ( Folder folder ) throws IOException, SQLException // { // if (folder != null) // { // return buildDirectories(folder.getEnclosingFolder()) + "/" + folder.getLabel(); // } // // return ""; // } public static synchronized void inspect ( UserDataItem userDataItem ) throws IOException, SQLException { inspect(userDataItem, Boolean.FALSE); } public static synchronized void inspect ( UserDataItem userDataItem, boolean outputContent ) throws IOException, SQLException { if (userDataItem != null) { logger.debug("ID: " + userDataItem.getUserDataId()); logger.debug("UUID: " + userDataItem.getUUID()); logger.debug("Label: " + userDataItem.getLabel().trim().replaceAll("\\s+", " ")); logger.debug("CreationDate: " + userDataItem.getCreationDate()); logger.debug("DataType: " + userDataItem.getDataType()); logger.debug("EntityType: " + userDataItem.getEntityType()); logger.debug("DataFormat: " + userDataItem.getDataFormat()); logger.debug("UserAssignedFormat: " + userDataItem.getUserAssignedDataFormat()); logger.debug("Validated: " + userDataItem.isValidated()); logger.debug("ParseStatus: " + userDataItem.getParseStatus() + "-" + userDataItem.getParseStatusName()); logger.debug("ParsedDate: " + (userDataItem.getParsedDate() == null? "" : userDataItem.getParsedDate())); logger.debug("IsAvailable? " + userDataItem.isAvailable()); logger.debug("IsQueued? " + userDataItem.isParseQueued()); logger.debug("IsProcessing? " + userDataItem.isParseProcessing()); logger.debug("IsSucceeded? " + userDataItem.isParseSucceeded()); logger.debug("IsFailed? " + userDataItem.isParseFailed()); logger.debug("IsUnknown? " + userDataItem.isParseUnknown()); logger.debug("Comment: " + (userDataItem.getComment() == null? "" : userDataItem.getComment())); String dir = userDataItem.getCompleteDirectory(); logger.debug("Directory: " + (dir == null? "" : dir)); List dirs = userDataItem.getDirectoryList(); for (String d : dirs) { logger.debug(INDENT + d); } if (userDataItem.metaData() == null || userDataItem.metaData().isEmpty()) { logger.debug("Meta Data: [NONE]"); } else { logger.debug("Meta Data:"); for (Iterator> entries = userDataItem.metaData().entrySet().iterator(); entries.hasNext();) { Map.Entry metaData = entries.next(); logger.debug(INDENT + metaData.getKey() + " = " + metaData.getValue()); } } if (userDataItem.dataRecords() == null || userDataItem.dataRecords().isEmpty()) { logger.debug("Record Fields: [NONE]"); } else { logger.debug("Record Fields:\n"); for (Iterator records = userDataItem.dataRecords().iterator(); records.hasNext();) { UserItemDataRecord record = records.next(); logger.debug(INDENT + "Record Type " + record.getRecordType()); for (Iterator fields = record.getFields().iterator(); fields.hasNext();) { RecordField field = fields.next(); logger.debug(INDENT + INDENT + "Field " + field.getFieldType() + " = " + field.getValueAsString()); } } } if (outputContent) { // Temporary filename. String fileName = userDataItem.getLabel().replaceAll("\\W", "_") + ".txt"; InputStream inputStream = userDataItem.getDataAsStream(); File file = new File(fileName); try { FileUtils.copyInputStreamToFile(inputStream, file); logger.debug("Wrote " + fileName); } finally { if (inputStream != null) { inputStream.close(); } FileUtils.deleteQuietly(file); } } } } public static synchronized void inspect ( TaskInputSourceDocument document ) throws IOException, SQLException { if (document != null) { logger.debug("InputID: " + document.getInputId()); logger.debug("InputDocID: " + document.getInputDocumentId()); logger.debug("SrcDocID: " + document.getSourceDocumentId()); logger.debug("Name: " + document.getName()); logger.debug("DataType: " + document.getDataType()); logger.debug("EntityType: " + document.getEntityType()); logger.debug("DataFormat: " + document.getDataFormat()); logger.debug("UserAssignedFormat: " + document.getUserAssignedDataFormat()); logger.debug("Validated: " + document.isValidated()); logger.debug("ParseStatus: " + document.getParseStatus()); logger.debug("ParsedDate: " + document.getParsedDate()); } } public static synchronized void inspect ( TaskOutputSourceDocument document ) throws IOException, SQLException { if (document != null) { logger.debug("OutputID: " + document.getOutputId()); logger.debug("OutputDocID: " + document.getOutputDocumentId()); logger.debug("SrcDocID: " + document.getSourceDocumentId()); logger.debug("Name: " + document.getName()); logger.debug("DataType: " + document.getDataType()); logger.debug("EntityType: " + document.getEntityType()); logger.debug("DataFormat: " + document.getDataFormat()); logger.debug("UserAssignedFormat: " + document.getUserAssignedDataFormat()); logger.debug("Validated: " + document.isValidated()); logger.debug("ParseStatus: " + document.getParseStatus()); logger.debug("ParsedDate: " + document.getParsedDate()); } } public static synchronized void inspect ( Task task ) throws IOException, SQLException { if (task != null) { logger.debug("TaskID: " + task.getTaskId()); logger.debug("GroupID: " + task.getGroupId()); logger.debug("UserID: " + task.getUserId()); logger.debug("Label: " + task.getLabel()); logger.debug("JobHandle: " + task.getJobHandle()); logger.debug("ToolID: " + task.getToolId()); logger.debug("AppName: " + task.getAppname()); logger.debug("Created: " + (task.getCreationDate() == null? "" : task.getCreationDate().toString())); String dir = task.getCompleteDirectory(); logger.debug("Directory: " + (dir == null? "" : dir)); List dirs = task.getDirectoryList(); for (String d : dirs) { logger.debug(INDENT + d); } } } // public static void main ( String[] args ) // { // try // { // if (args.length != 1) // { // throw new Exception("usage: DataInspector id"); // } // // ConnectionManager.setConnectionSource(new DriverConnectionSource()); // // //inspect(Long.valueOf(args[0])); // // inspect(Long.valueOf(23526)); // } // catch ( Exception err ) // { // err.printStackTrace(System.err); // // System.exit(-1); // } // } }