package org.fastcatsearch.job.state; import java.io.IOException; import org.fastcatsearch.ir.common.IndexingType; import org.fastcatsearch.ir.io.DataInput; import org.fastcatsearch.ir.io.DataOutput; public class IndexingTaskState extends TaskState { public static final String STEP_INITIALIZE = "TASK INITIALIZE"; public static final String STEP_END = "TASK END"; public static final String STEP_INDEXING = "INDEXING"; public static final String STEP_FILECOPY = "COPY FILE TO REMOTE NODE"; public static final String STEP_FINALIZE = "FINALIZE"; public static final String STEP_DOCUMENT_STORE = "DOCUMENT STORE"; // 문서저장 색인작업. private IndexingType indexingType; private int documentCount; public IndexingTaskState() { } public IndexingTaskState(IndexingType indexingType, boolean isScheduled) { super(isScheduled); this.indexingType = indexingType; } public IndexingType getIndexingType() { return indexingType; } public int getDocumentCount() { return documentCount; } public void incrementDocumentCount() { documentCount++; } @Override public String getSummary() { return (isScheduled ? "scheduled" : "manually") + " indexing " + documentCount + (step != null ? " : " + step : ""); } @Override public int getProgressRate() { return -1; // -1은 진행율 표시하지 않음. } @Override public void readFrom(DataInput input) throws IOException { super.readFrom(input); indexingType = IndexingType.valueOf(input.readString()); documentCount = input.readVInt(); } @Override public void writeTo(DataOutput output) throws IOException { super.writeTo(output); output.writeString(indexingType.name()); output.writeVInt(documentCount); } }