diff --git a/.gitignore b/.gitignore index a94349f..c52aa7a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /target/ /bin/ /testFileReader1.txt +/state2.json diff --git a/pom.xml b/pom.xml index be4cabb..35c451a 100644 --- a/pom.xml +++ b/pom.xml @@ -124,7 +124,7 @@ com.fasterxml.jackson.core jackson-databind - 2.3.0 + 2.1.5 junit diff --git a/src/main/java/info/fetter/logstashforwarder/FileState.java b/src/main/java/info/fetter/logstashforwarder/FileState.java index 013507e..6c489a8 100644 --- a/src/main/java/info/fetter/logstashforwarder/FileState.java +++ b/src/main/java/info/fetter/logstashforwarder/FileState.java @@ -21,21 +21,36 @@ import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; +import org.apache.commons.lang.builder.ToStringBuilder; + +import com.fasterxml.jackson.annotation.JsonIgnore; + public class FileState { + @JsonIgnore private File file; private String directory; + private String fileName; + @JsonIgnore private long lastModified; + @JsonIgnore private long size; + @JsonIgnore private boolean deleted = false; private long signature; private int signatureLength; + @JsonIgnore private boolean changed = false; + @JsonIgnore private RandomAccessFile randomAccessFile; private long pointer = 0; + @JsonIgnore private FileState oldFileState; - private String fileName; + @JsonIgnore private Event fields; + public FileState() { + } + public FileState(File file) throws IOException { this.file = file; directory = file.getCanonicalFile().getParent(); @@ -44,6 +59,10 @@ public class FileState { lastModified = file.lastModified(); size = file.length(); } + + private void setFileFromDirectoryAndName() { + this.file = new File(directory + File.pathSeparator + fileName); + } public File getFile() { return file; @@ -61,6 +80,24 @@ public class FileState { return directory; } + public void setDirectory(String directory) { + this.directory = directory; + if(fileName != null && directory != null) { + setFileFromDirectoryAndName(); + } + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + if(fileName != null && directory != null) { + setFileFromDirectoryAndName(); + } + } + public boolean isDeleted() { return deleted; } @@ -113,10 +150,6 @@ public class FileState { this.oldFileState = oldFileState; } - public String getFileName() { - return fileName; - } - public Event getFields() { return fields; } @@ -125,4 +158,15 @@ public class FileState { this.fields = fields; } + @Override + public String toString() { + return new ToStringBuilder(this). + append("fileName", fileName). + append("directory", directory). + append("pointer", pointer). + append("signature", signature). + append("signatureLength", signatureLength). + toString(); + } + } diff --git a/src/main/java/info/fetter/logstashforwarder/Forwarder.java b/src/main/java/info/fetter/logstashforwarder/Forwarder.java index 38fe379..a1eb39e 100644 --- a/src/main/java/info/fetter/logstashforwarder/Forwarder.java +++ b/src/main/java/info/fetter/logstashforwarder/Forwarder.java @@ -16,10 +16,8 @@ import org.apache.commons.cli.Option; import org.apache.commons.cli.OptionBuilder; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; -import org.apache.log4j.Appender; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Level; -import org.apache.log4j.Logger; import org.apache.log4j.spi.RootLogger; /* diff --git a/src/test/resources/state1.json b/src/test/resources/state1.json new file mode 100644 index 0000000..481744b --- /dev/null +++ b/src/test/resources/state1.json @@ -0,0 +1,4 @@ +[ +{"fileName":"file1","directory":"/directory1","pointer":12345,"signature":654321,"signatureLength":135}, +{"fileName":"file2","directory":"/directory2","pointer":23456,"signature":7654,"signatureLength":246} +] \ No newline at end of file