diff options
author | Eike Stepper | 2012-07-29 08:51:25 +0000 |
---|---|---|
committer | Eike Stepper | 2012-07-29 08:51:25 +0000 |
commit | f741a4ab3118ccc90c34b114026079bee41fb2bd (patch) | |
tree | 03fe32b382911959c5be338ae15b3137cb7e7e66 /plugins | |
parent | b4a81b0b53a216e513103c09adb9850b23146f53 (diff) | |
download | cdo-f741a4ab3118ccc90c34b114026079bee41fb2bd.tar.gz cdo-f741a4ab3118ccc90c34b114026079bee41fb2bd.tar.xz cdo-f741a4ab3118ccc90c34b114026079bee41fb2bd.zip |
Create builder framework
Diffstat (limited to 'plugins')
4 files changed, 182 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/proto/BuildContext.java b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/proto/BuildContext.java new file mode 100644 index 0000000000..67fb796730 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/proto/BuildContext.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.releng.internal.version.proto; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IncrementalProjectBuilder; + +import java.util.Map; + +/** + * @author Eike Stepper + */ +public class BuildContext +{ + private Builder<?> builder; + + private boolean fullBuild; + + public BuildContext(Builder<?> builder, int kind, Map<String, String> args) + { + this.builder = builder; + fullBuild = kind == IncrementalProjectBuilder.FULL_BUILD || kind == IncrementalProjectBuilder.CLEAN_BUILD; + } + + public IProject getProject() + { + return builder.getProject(); + } + + public IResourceDelta getDelta() + { + return builder.getDelta(getProject()); + } + + public boolean isFullBuild() + { + return fullBuild; + } + + public void setFullBuild() + { + fullBuild = true; + } +} diff --git a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/proto/Builder.java b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/proto/Builder.java new file mode 100644 index 0000000000..f8300c6012 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/proto/Builder.java @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.releng.internal.version.proto; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IncrementalProjectBuilder; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author Eike Stepper + */ +public class Builder<DEPENDENCY> extends IncrementalProjectBuilder +{ + private List<DependencyProvider> dependencyProviders = new ArrayList<DependencyProvider>(); + + public Builder() + { + } + + @Override + protected IProject[] build(int kind, Map<String, String> args, IProgressMonitor monitor) throws CoreException + { + BuildContext buildContext = new BuildContext(this, kind, args); + + initDependencyProviders(buildContext); + boolean dependenciesMayHaveChanged = dependenciesMayHaveChanged(); + + List<DEPENDENCY> dependencies; + List<DependencyDelta> dependencyDeltas; + if (dependenciesMayHaveChanged) + { + for (DependencyProvider dependencyProvider : dependencyProviders) + { + // List<DEPENDENCY> dependencies; + // dependencyProvider.getDependencies(); + } + } + + return null; + } + + private void initDependencyProviders(BuildContext buildContext) + { + for (DependencyProvider dependencyProvider : dependencyProviders) + { + dependencyProvider.setBuildContext(buildContext); + } + } + + private boolean dependenciesMayHaveChanged() + { + for (DependencyProvider dependencyProvider : dependencyProviders) + { + if (dependencyProvider.dependenciesMayHaveChanged()) + { + return true; + } + } + + return false; + } +} diff --git a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/proto/DependencyDelta.java b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/proto/DependencyDelta.java new file mode 100644 index 0000000000..0bdff6c6a8 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/proto/DependencyDelta.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.releng.internal.version.proto; + +/** + * @author Eike Stepper + */ +public class DependencyDelta +{ + +} diff --git a/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/proto/DependencyProvider.java b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/proto/DependencyProvider.java new file mode 100644 index 0000000000..5501bfb45d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.releng.version/src/org/eclipse/emf/cdo/releng/internal/version/proto/DependencyProvider.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.releng.internal.version.proto; + +/** + * @author Eike Stepper + */ +public abstract class DependencyProvider +{ + private BuildContext buildContext; + + public DependencyProvider() + { + } + + public BuildContext getBuildContext() + { + return buildContext; + } + + public void setBuildContext(BuildContext buildContext) + { + this.buildContext = buildContext; + } + + public abstract boolean dependenciesMayHaveChanged(); +} |