package com.farata.cleardatabuilder.extjs.wizard; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.Set; import org.eclipse.core.internal.runtime.LocalizationUtils; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jpt.jpa.core.internal.facet.JpaFacetDataModelProperties; import org.eclipse.jpt.jpa.core.internal.facet.JpaFacetInstallDataModelProvider; import org.eclipse.wst.common.frameworks.datamodel.DataModelPropertyDescriptor; import com.farata.cleardatabuilder.extjs.facet.common.CommonInstallWizardPage; import com.farata.cleardatabuilder.extjs.facet.sample.SampleInstallWizardPage; public class CDBDataModelProvider extends JpaFacetInstallDataModelProvider implements CDBFacetDataModelProperties { public Set getPropertyNames() { Set<String> names = super.getPropertyNames(); names.add(CDB_PROJECT_TYPE); names.add(CDB_APPLICATION_NAME); names.add(CDB_EXTJS_FOLDER); names.add(CDB_EXTJS_URL); names.add(CDB_EXTJS_CDN); names.add(CDB_PERSISTANCE_PLATFORM); names.add(CDB_SPRING_INTEGRATION); names.add(CDB_SAMPLEDB_FOLDER); names.add(CDB_EXTJS_LOCATION_TYPE); return names; } public IStatus validate(String s) { if (CDB_APPLICATION_NAME.equals(s)) { boolean valid = false; String app = model.getStringProperty(s); valid = CommonInstallWizardPage.validateAppName(app); if (valid) { return Status.OK_STATUS; } else { return new Status(4, "unknown", "Application name is not valid.."); } } else if (CDB_EXTJS_LOCATION_TYPE.equals(s) || CDB_EXTJS_CDN.equals(s) || CDB_EXTJS_FOLDER.equals(s) || CDB_EXTJS_URL.equals(s)) { String locationType = model.getStringProperty(CDB_EXTJS_LOCATION_TYPE); if (TYPE_LOCAL_FOLDER.equals(locationType)) { String sPath = model.getStringProperty(CDB_EXTJS_FOLDER); if (sPath != null && sPath.trim().length() > 0) { File path = new File(sPath.trim()); if (path.exists()) { boolean valid = CommonInstallWizardPage.validateExtJSPath(path); if (valid) { return Status.OK_STATUS; } else { return new Status(4, "unknown", "Ext JS folder is not valid."); } } } } else if (TYPE_CDN.equals(locationType)) { String sPath = model.getStringProperty(CDB_EXTJS_CDN); return validateURL(sPath); } else if (TYPE_LOCAL_URL.equals(locationType)) { String sPath = model.getStringProperty(CDB_EXTJS_URL); return validateURL(sPath); } } else if (CDB_SAMPLEDB_FOLDER.equals(s)) { boolean valid = false; String sPath = model.getStringProperty(s); if (sPath != null && sPath.trim().length() > 0) { File path = new File(sPath.trim()); valid = SampleInstallWizardPage.validateInstallationFolder(path); } if (valid) { return Status.OK_STATUS; } else { return new Status(4, "unknown", "cleardb installation folder is not valid."); } } else if (CDB_PERSISTANCE_PLATFORM.equals(s)) { String platform = model.getStringProperty(s); boolean isNew = "new".equals(model.getStringProperty(CDB_PROJECT_TYPE)); if (isNew && ("myBatis".equals(platform) || "hibernate".equals(platform))) { boolean connectionActive = model.getBooleanProperty(JpaFacetDataModelProperties.CONNECTION_ACTIVE); // boolean connectionActive = // model.getProperty(JpaFacetDataModelProperties.CONNECTION_ACTIVE); if (!connectionActive) { return new Status(4, "unknown", "Connection should be selected and active."); } } return Status.OK_STATUS; } return super.validate(s); } private IStatus validateURL(String sPath) { IStatus status = Status.OK_STATUS; boolean valid = sPath != null && sPath.trim().length() > 0; if (!valid) { return new Status(4, "unknown", "Ext JS location is not valid."); } // if (isExternalURL(sPath)) { // if (sPath.endsWith("/")) { // sPath = sPath.substring(0, sPath.length() - 1); // } // try { // URL url = new URL(sPath+"/ext-all.js"); // url.openStream(); // } catch (Exception e) { // //e.printStackTrace(); // return new Status(4, "unknown", "Ext JS location is not valid. " + e.getMessage()); // } // // } return status; } private boolean isExternalURL(String sPath) { return sPath.startsWith("http"); } }