| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- package info.fetter.logstashforwarder;
- /*
- * Copyright 2015 Didier Fetter
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
- import info.fetter.logstashforwarder.util.RandomAccessFile;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- //import java.io.RandomAccessFile;
- import org.apache.commons.lang.builder.ToStringBuilder;
- import com.fasterxml.jackson.annotation.JsonIgnore;
- import java.util.Map;
- 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;
- @JsonIgnore
- private Event fields;
- @JsonIgnore
- private Multiline multiline;
- @JsonIgnore
- private boolean matchedToNewFile = false;
- public FileState() {
- }
- public FileState(File file) throws IOException {
- this.file = file;
- directory = file.getCanonicalFile().getParent();
- fileName = file.getName();
- randomAccessFile = new RandomAccessFile(file.getPath(), "r");
- lastModified = file.lastModified();
- size = file.length();
- }
- private void setFileFromDirectoryAndName() throws FileNotFoundException {
- file = new File(directory + File.separator + fileName);
- if(file.exists()) {
- randomAccessFile = null;
- lastModified = file.lastModified();
- size = file.length();
- } else {
- deleted = true;
- }
- }
- public File getFile() {
- return file;
- }
- public long getLastModified() {
- return lastModified;
- }
- public long getSize() {
- return size;
- }
- public String getDirectory() {
- return directory;
- }
- public void setDirectory(String directory) throws FileNotFoundException {
- this.directory = directory;
- if(fileName != null && directory != null) {
- setFileFromDirectoryAndName();
- }
- }
- public String getFileName() {
- return fileName;
- }
- public void setFileName(String fileName) throws FileNotFoundException {
- this.fileName = fileName;
- if(fileName != null && directory != null) {
- setFileFromDirectoryAndName();
- }
- }
- public boolean isDeleted() {
- return deleted;
- }
- public void setDeleted() {
- deleted = true;
- }
- public boolean hasChanged() {
- return changed;
- }
- public void setChanged(boolean changed) {
- this.changed = changed;
- }
- public long getSignature() {
- return signature;
- }
- public void setSignature(long signature) {
- this.signature = signature;
- }
- public RandomAccessFile getRandomAccessFile() {
- return randomAccessFile;
- }
- public long getPointer() {
- return pointer;
- }
- public void setPointer(long pointer) {
- this.pointer = pointer;
- }
- public int getSignatureLength() {
- return signatureLength;
- }
- public void setSignatureLength(int signatureLength) {
- this.signatureLength = signatureLength;
- }
- public FileState getOldFileState() {
- return oldFileState;
- }
- public void setOldFileState(FileState oldFileState) {
- this.oldFileState = oldFileState;
- oldFileState.setMatchedToNewFile(true);
- }
-
- public void deleteOldFileState() {
- try {
- oldFileState.getRandomAccessFile().close();
- oldFileState = null;
- } catch(Exception e) {}
- }
- public Event getFields() {
- return fields;
- }
- public void setFields(Event fields) {
- this.fields = fields;
- }
-
- public Multiline getMultiline() {
- return multiline;
- }
-
- public void setMultiline(Multiline multiline) {
- this.multiline = multiline;
- }
-
-
- public boolean isMatchedToNewFile() {
- return matchedToNewFile;
- }
- public void setMatchedToNewFile(boolean matchedToNewFile) {
- this.matchedToNewFile = matchedToNewFile;
- }
- @Override
- public String toString() {
- return new ToStringBuilder(this).
- append("fileName", fileName).
- append("directory", directory).
- append("pointer", pointer).
- append("signature", signature).
- append("signatureLength", signatureLength).
- toString();
- }
- }
|