/*
* 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.ivyde.eclipse.cp;
import java.util.Arrays;
import java.util.List;
import org.apache.ivyde.internal.eclipse.IvyPlugin;
import org.apache.ivyde.internal.eclipse.cpcontainer.IvyClasspathContainerConfAdapter;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jdt.core.IClasspathAttribute;
import org.eclipse.jdt.core.IJavaProject;
/**
* This class is just a simple bean defining the properties which configure an IvyDE classpath
* container.
*/
public class IvyClasspathContainerConfiguration {
private IJavaProject javaProject;
private String ivyXmlPath;
private List/* <String> */confs = Arrays.asList(new String[] {"*"});
private SettingsSetup settingsSetup = new SettingsSetup();
private ClasspathSetup classpathSetup = new ClasspathSetup();
private MappingSetup mappingSetup = new MappingSetup();
private AdvancedSetup advancedSetup = new AdvancedSetup();
private boolean settingsProjectSpecific;
private boolean classthProjectSpecific;
private boolean mappingProjectSpecific;
private boolean advancedProjectSpecific;
/**
* attributes attached to the container but not IvyDE related (Webtools or AspectJfor instance)
*/
private IClasspathAttribute[] attributes = new IClasspathAttribute[0];
/**
* Constructor
*
* @param javaProject
* the classpath container's Java project, <code>null</code> is not bind to a project
* @param ivyXmlPath
* the path to the ivy.xml
* @param editing
* if set to true, this bean will be used for edition purpose, so no need to trigger
* UI notification about some errors in there
*/
public IvyClasspathContainerConfiguration(IJavaProject javaProject, String ivyXmlPath,
boolean editing) {
this.javaProject = javaProject;
this.ivyXmlPath = ivyXmlPath;
}
/**
* Constructor
*
* @param javaProject
* the classpath container's Java project, <code>null</code> if not bind to a project
* @param path
* the path of the classpath container
* @param editing
* if set to true, this bean will be used for edition purpose, so no need to trigger
* UI notification about some errors in there
* @param attributes
*/
public IvyClasspathContainerConfiguration(IJavaProject javaProject, IPath path,
boolean editing, IClasspathAttribute[] attributes) {
this.javaProject = javaProject;
IvyClasspathContainerConfAdapter.load(this, path, attributes);
}
public IPath getPath() {
return IvyClasspathContainerConfAdapter.getPath(this);
}
// ///////////////////////////
// Simple setters and getters
// ///////////////////////////
public String getIvyXmlPath() {
return ivyXmlPath;
}
public void setIvyXmlPath(String ivyXmlPath) {
this.ivyXmlPath = ivyXmlPath;
}
public List getConfs() {
return confs;
}
public void setConfs(List confs) {
this.confs = confs;
}
public SettingsSetup getIvySettingsSetup() {
return settingsSetup;
}
public void setIvySettingsSetup(SettingsSetup ivySettingsSetup) {
this.settingsSetup = ivySettingsSetup;
}
public ClasspathSetup getClasspathSetup() {
return classpathSetup;
}
public void setClasspathSetup(ClasspathSetup classpathSetup) {
this.classpathSetup = classpathSetup;
}
public MappingSetup getMappingSetup() {
return mappingSetup;
}
public void setMappingSetup(MappingSetup mappingSetup) {
this.mappingSetup = mappingSetup;
}
public AdvancedSetup getAdvancedSetup() {
return advancedSetup;
}
public void setAdvancedSetup(AdvancedSetup advancedSetup) {
this.advancedSetup = advancedSetup;
}
public boolean isClassthProjectSpecific() {
return classthProjectSpecific;
}
public void setClassthProjectSpecific(boolean classthProjectSpecific) {
this.classthProjectSpecific = classthProjectSpecific;
}
public boolean isMappingProjectSpecific() {
return mappingProjectSpecific;
}
public void setMappingProjectSpecific(boolean mappingProjectSpecific) {
this.mappingProjectSpecific = mappingProjectSpecific;
}
public boolean isSettingsProjectSpecific() {
return settingsProjectSpecific;
}
public void setSettingsProjectSpecific(boolean isSettingsProjectSpecific) {
this.settingsProjectSpecific = isSettingsProjectSpecific;
}
public boolean isAdvancedProjectSpecific() {
return advancedProjectSpecific;
}
public void setAdvancedProjectSpecific(boolean advancedProjectSpecific) {
this.advancedProjectSpecific = advancedProjectSpecific;
}
public IJavaProject getJavaProject() {
return javaProject;
}
public void setProject(IJavaProject javaProject) {
this.javaProject = javaProject;
}
public void setAttributes(IClasspathAttribute[] attributes) {
this.attributes = attributes;
}
public IClasspathAttribute[] getAttributes() {
return attributes;
}
// ///////////////////////////
// Getters that take into account the global preferences
// ///////////////////////////
public IProject getProject() {
if (javaProject == null) {
return null;
}
return javaProject.getProject();
}
public SettingsSetup getInheritedSettingsSetup() {
if (!settingsProjectSpecific) {
return IvyPlugin.getPreferenceStoreHelper().getSettingsSetup();
}
return settingsSetup;
}
public ClasspathSetup getInheritedClasspathSetup() {
if (!classthProjectSpecific) {
return IvyPlugin.getPreferenceStoreHelper().getClasspathSetup();
}
return classpathSetup;
}
public MappingSetup getInheritedMappingSetup() {
if (!mappingProjectSpecific) {
return IvyPlugin.getPreferenceStoreHelper().getMappingSetup();
}
return mappingSetup;
}
public AdvancedSetup getInheritedAdvancedSetup() {
if (!advancedProjectSpecific) {
return IvyPlugin.getPreferenceStoreHelper().getAdvancedSetup();
}
return advancedSetup;
}
public String toString() {
return ivyXmlPath + confs
+ (javaProject == null ? "" : " in '" + javaProject.getProject().getName() + "'");
}
}