package com.farata.cleardatabuilder.extjs.migration; import java.io.ByteArrayInputStream; import java.io.IOException; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.osgi.framework.Version; import com.farata.cleardatabuilder.extjs.util.Commons; /** * Performs configuration of folder "daoflex.conf" within a particular CDB * project. */ public class CDBConfigurator { private final IProject project; private final IFolder confFolder; public CDBConfigurator(final IProject project) { super(); this.project = project; this.confFolder = project.getFolder("cdb_build"); } public IProject getProject() { return project; } public Version getProjectCdbVersion(final IProgressMonitor monitor) throws IOException, CoreException { final IFile versionFile = confFolder.getFile(".version"); versionFile.refreshLocal(IContainer.DEPTH_ZERO, monitor); if (!versionFile.exists()) { return Version.emptyVersion; } return Version.parseVersion(Commons.readFirstLine(versionFile)); } public boolean isIncrementalBuildSkipped(final IProgressMonitor monitor) throws CoreException { final IFile file = confFolder.getFile(".skipIncrementalBuilder"); file.refreshLocal(IContainer.DEPTH_ZERO, monitor); return file.exists(); } public void setIncrementalBuildSkipped(final boolean skip, final IProgressMonitor monitor) throws CoreException { final IFile file = confFolder.getFile(".skipIncrementalBuilder"); file.refreshLocal(IContainer.DEPTH_ZERO, monitor); if (skip == isIncrementalBuildSkipped(monitor)) return;// EARLY EXIT!!! if (skip) file.create(new ByteArrayInputStream(new byte[] {}), true, monitor); else file.delete(true, monitor); } }