/** * Copyright (C) Intersect 2012. * * This module contains Proprietary Information of Intersect, * and should be treated as Confidential. */ package au.org.intersect.exsite9.service.factory; import java.io.File; import javax.persistence.EntityManagerFactory; import org.eclipse.core.runtime.Platform; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.services.AbstractServiceFactory; import org.eclipse.ui.services.IServiceLocator; import au.org.intersect.exsite9.dao.factory.MetadataAttributeDAOFactory; import au.org.intersect.exsite9.dao.factory.MetadataCategoryDAOFactory; import au.org.intersect.exsite9.dao.factory.SchemaDAOFactory; import au.org.intersect.exsite9.service.SchemaService; /** * Responsible for creating instances of {@link SchemaService} */ public final class SchemaServiceFactory extends AbstractServiceFactory { /** * */ public SchemaServiceFactory() { } /** * @{inheritDoc} */ @Override @SuppressWarnings("rawtypes") public Object create(final Class serviceInterface, final IServiceLocator parentLocator, final IServiceLocator locator) { // Lookup the default schema directory (which is under the workspace directory). final String workspaceDir = Platform.getInstallLocation().getURL().getPath(); final File schemaDir = new File(workspaceDir, "schemas"); final File schemaDirToUse; final File defaultSchemaToUse; if (schemaDir.exists() && schemaDir.isDirectory()) { schemaDirToUse = schemaDir; final File defaultSchema = new File(schemaDirToUse, "DefaultSchema.xml"); if (defaultSchema.exists() && defaultSchema.canRead()) { defaultSchemaToUse = defaultSchema; } else { defaultSchemaToUse = null; } } else { schemaDirToUse = null; defaultSchemaToUse = null; } final File configurationDir = new File(workspaceDir, "configuration"); final File metadataSchemaSchema = new File(configurationDir, "ExSite9MetadataSchema.rng"); final EntityManagerFactory emf = (EntityManagerFactory) PlatformUI.getWorkbench().getService(EntityManagerFactory.class); final SchemaDAOFactory schemaDAOFactory = new SchemaDAOFactory(); final MetadataCategoryDAOFactory metadataCategoryDAOFactory = new MetadataCategoryDAOFactory(); final MetadataAttributeDAOFactory metadataAttributeDAOFactory = new MetadataAttributeDAOFactory(); final SchemaService schemaService = new SchemaService(schemaDirToUse, defaultSchemaToUse, metadataSchemaSchema, emf, schemaDAOFactory, metadataCategoryDAOFactory, metadataAttributeDAOFactory); return schemaService; } }