package org.jfrog.wharf.ivy.lock;
import java.io.File;
import java.io.IOException;
/**
* Date: 9/15/11
* Time: 10:43 AM
*
* @author Fred Simon
*/
public abstract class BaseFileLockHolder implements InternalLockHolder {
protected final LockHolderFactory factory;
protected final File protectedFile;
protected final File lockFile;
protected String lastMessage;
protected BaseFileLockHolder(LockHolderFactory factory, File protectedFile) {
this.protectedFile = protectedFile;
this.factory = factory;
this.lockFile = new File(protectedFile + factory.getLockFileSuffix());
}
protected void verifyParentDir() throws IOException {
File dir = lockFile.getParentFile();
if (!dir.exists()) {
if (!dir.mkdirs()) {
setLastMessage("Could not create directory " + dir.getAbsolutePath() +
" for file " + protectedFile.getAbsolutePath());
throw new IOException(stateMessage());
}
}
}
@Override
public File getProtectedFile() {
return protectedFile;
}
@Override
public File getLockFile() {
return lockFile;
}
@Override
public LockHolderFactory getFactory() {
return factory;
}
@Override
public LockLogger getLogger() {
return factory.getLogger();
}
@Override
public String toString() {
return "LockHolder on '" + lockFile + "'";
}
@Override
public String stateMessage() {
return "LockHolder on '" + lockFile + "' says " + lastMessage;
}
@Override
public void setLastMessage(String lastMessage) {
this.lastMessage = lastMessage;
}
@Override
public void appendLastMessage(String lastMessage) {
this.lastMessage += lastMessage;
}
}