blob: e6d7da64f4ac3e565391919300275e7ab83274bd [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
package org.apache.oodt.cas.crawl.action;
//JDK imports
import java.io.File;
//OODT imports
import org.apache.oodt.cas.crawl.action.CrawlerAction;
import org.apache.oodt.cas.crawl.structs.exceptions.CrawlerActionException;
import org.apache.oodt.cas.metadata.Metadata;
/**
* This class provides some basic support for actions revolving around files. It
* allows action to support file selection based on configuration, metadata, or
* the current file being handled by the crawler. In addition, it supports the
* usage of FileSettings to provide conformance amongst extending actions.
* Finally, it captures a flag for indicating whether the action should fail
* should the file not exist.
*
* @author pramirez (Paul Ramirez)
* @author mattmann (Chris Mattmann)
*
*/
public abstract class FileBasedAction extends CrawlerAction {
protected String file;
protected String fileKey;
protected FileSettings fileSettings;
protected boolean failMissingFile;
public FileBasedAction() {
fileSettings = new FileSettings();
this.failMissingFile = false;
}
public void setFilePrefix(String filePrefix) {
fileSettings.setFilePrefix(filePrefix);
}
public void setFileSuffix(String fileSuffix) {
fileSettings.setFileSuffix(fileSuffix);
}
public void setFileExtension(String fileExtension) {
fileSettings.setFileExtension(fileExtension);
}
public void setKeepExistingExtension(boolean keepExistingExtension) {
fileSettings.setKeepExistingExtension(keepExistingExtension);
}
public void setFile(String file) {
this.file = file;
}
public void setFileKey(String fileKey) {
this.fileKey = fileKey;
}
public void setFailMissingFile(boolean failMissingFile) {
this.failMissingFile = failMissingFile;
}
public File getSelectedFile(File product, Metadata metadata) {
File selectedFile = null;
if (file == null && fileKey == null) {
selectedFile = product;
} else if (file != null) {
selectedFile = new File(file);
} else {
selectedFile = new File(metadata.getMetadata(fileKey));
}
return selectedFile;
}
public boolean performAction(File product, Metadata metadata)
throws CrawlerActionException {
File selectedFile = this.getSelectedFile(product, metadata);
String selectedFileString = this.fileSettings
.getPreparedFileString(selectedFile);
File actionFile = new File(selectedFileString);
if (failMissingFile && !actionFile.exists()) {
LOG.severe("File does not exist: " + actionFile.getAbsolutePath());
return false;
}
if (actionFile.exists()) {
return this.performFileAction(actionFile, metadata);
} else {
LOG.fine("File does not exist: " + actionFile.getAbsolutePath());
}
return true;
}
public abstract boolean performFileAction(File actionFile, Metadata metadata)
throws CrawlerActionException;
}