blob: eb82f03cc431862db4099f379767d59bb7aca702 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2007 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.j2ee.internal.earcreation;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
import org.eclipse.jst.j2ee.internal.common.J2EEVersionUtil;
import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
import org.eclipse.jst.j2ee.internal.plugin.J2EEPreferences;
import org.eclipse.jst.j2ee.project.facet.J2EEFacetInstallDataModelProvider;
import org.eclipse.wst.common.componentcore.ComponentCore;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
import org.eclipse.jst.j2ee.internal.project.ProjectSupportResourceHandler;
import org.eclipse.osgi.util.NLS;
public class EarFacetInstallDataModelProvider extends J2EEFacetInstallDataModelProvider implements IEarFacetInstallDataModelProperties {
@Override
public Set getPropertyNames() {
Set names = super.getPropertyNames();
names.add(CONTENT_DIR);
names.add(J2EE_PROJECTS_LIST);
names.add(JAVA_PROJECT_LIST);
return names;
}
@Override
public Object getDefaultProperty(String propertyName) {
if (propertyName.equals(FACET_ID)) {
return ENTERPRISE_APPLICATION;
} else if (propertyName.equals(CONTENT_DIR)) {
return J2EEPlugin.getDefault().getJ2EEPreferences().getString(J2EEPreferences.Keys.APPLICATION_CONTENT_FOLDER);
} else if (propertyName.equals(J2EE_PROJECTS_LIST) || propertyName.equals(JAVA_PROJECT_LIST)) {
return Collections.EMPTY_LIST;
} else if(propertyName.equals(GENERATE_DD)){
String facetVersion = getStringProperty(FACET_VERSION_STR);
if(J2EEVersionUtil.convertVersionStringToInt(facetVersion) >= J2EEVersionConstants.JEE_5_0_ID){
return Boolean.valueOf(J2EEPlugin.getDefault().getJ2EEPreferences().getBoolean(J2EEPreferences.Keys.APPLICATION_GENERATE_DD));
}
return Boolean.TRUE;
}
return super.getDefaultProperty(propertyName);
}
@Override
public IStatus validate(String name) {
if (name.equals(J2EE_PROJECTS_LIST)) {
return validateTargetComponentVersion((List) model.getProperty(J2EE_PROJECTS_LIST));
} else if (name.equals(CONTENT_DIR)) {
return validateFolderName(getStringProperty(CONTENT_DIR));
}
return super.validate(name);
}
private IStatus validateTargetComponentVersion(List list) {
int earVersion = getJ2EEVersion();
for (Iterator iter = list.iterator(); iter.hasNext();) {
IProject handle = (IProject) iter.next();
IVirtualComponent comp = ComponentCore.createComponent(handle.getProject());
if (comp == null) return OK_STATUS; //Not a faceted project, so version not relevant
int compVersion = J2EEVersionUtil.convertVersionStringToInt(comp);
if (earVersion < compVersion) {
String errorStatus = NLS.bind(ProjectSupportResourceHandler.EarFacetInstallDataModelProvider_The_Module_specification_level_of_, handle.getName());
return J2EEPlugin.newErrorStatus(errorStatus, null);
}
}
return OK_STATUS;
}
@Override
protected int convertFacetVersionToJ2EEVersion(IProjectFacetVersion version) {
return J2EEVersionUtil.convertVersionStringToInt(version.getVersionString());
}
}