/*
* (c) Copyright 2010-2011 AgileBirds
*
* This file is part of OpenFlexo.
*
* OpenFlexo is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* OpenFlexo is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenFlexo. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openflexo.generator.rm;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.openflexo.foundation.cg.CGFile;
import org.openflexo.foundation.cg.CGRepository;
import org.openflexo.foundation.cg.CGSymbolicDirectory;
import org.openflexo.foundation.cg.generator.GeneratorUtils;
import org.openflexo.foundation.dm.eo.DMEOEntity;
import org.openflexo.foundation.dm.eo.DMEOModel;
import org.openflexo.foundation.rm.FlexoCopiedResource;
import org.openflexo.foundation.rm.FlexoFileResource;
import org.openflexo.foundation.rm.FlexoProject;
import org.openflexo.foundation.rm.ResourceType;
import org.openflexo.foundation.rm.cg.CGRepositoryFileResource;
import org.openflexo.foundation.rm.cg.CopyOfFileResource;
import org.openflexo.foundation.rm.cg.CopyOfFlexoResource;
import org.openflexo.generator.GeneratedResourceFileFactory;
import org.openflexo.generator.PackagedResourceToCopyGenerator;
import org.openflexo.generator.bpel.BPELFileGenerator;
import org.openflexo.generator.bpel.BPELFileResource;
import org.openflexo.generator.bpel.BPELWSDLFileGenerator;
import org.openflexo.generator.bpel.BPELWSDLFileResource;
import org.openflexo.generator.bpel.BPELXSDFileGenerator;
import org.openflexo.generator.bpel.BPELXSDFileResource;
import org.openflexo.generator.cg.CGAPIFile;
import org.openflexo.generator.cg.CGJavaFile;
import org.openflexo.generator.cg.CGPListFile;
import org.openflexo.generator.cg.CGTextFile;
import org.openflexo.generator.cg.CGWOFile;
import org.openflexo.generator.cg.CGWebServerImageFile;
import org.openflexo.generator.dm.EOEntityPListGenerator;
import org.openflexo.generator.dm.EOModelPListGenerator;
import org.openflexo.generator.dm.GenericRecordGenerator;
import org.openflexo.generator.ie.PageComponentGenerator;
import org.openflexo.generator.ie.PopupComponentGenerator;
import org.openflexo.generator.ie.PopupLinkComponentGenerator;
import org.openflexo.generator.ie.TabComponentGenerator;
import org.openflexo.generator.utils.ApplicationConfProdGenerator;
import org.openflexo.generator.utils.BuildPropertiesGenerator;
import org.openflexo.generator.utils.HelpGenerator;
import org.openflexo.generator.utils.JavaClassGenerator;
import org.openflexo.generator.utils.LocalizedFileGenerator;
import org.openflexo.generator.utils.MetaFileGenerator;
import org.openflexo.generator.utils.MetaWOGenerator;
import org.openflexo.generator.utils.PrototypeProcessBusinessDataSamplesGenerator;
import org.openflexo.generator.utils.ResourceToCopyGenerator;
import org.openflexo.generator.wkf.ControlGraphGenerator;
import org.openflexo.logging.FlexoLogger;
import org.openflexo.toolbox.FileResource;
public class GeneratedFileResourceFactory {
static final Logger logger = FlexoLogger.getLogger(GeneratedFileResourceFactory.class.getPackage().getName());
public static CGRepositoryFileResource resourceForKeyWithCGFile(FlexoProject project, ResourceType type, String resourceName) {
CGRepositoryFileResource ret = (CGRepositoryFileResource) project.resourceForKey(type, resourceName);
if (ret != null && ret.getCGFile() == null) {
ret.delete(false);
ret = null;
}
return ret;
}
/**
* @param repository
* @param generator
* @return
*/
public static ApplicationConfProdResource createApplicationConfProdFileResource(CGRepository repository,
ApplicationConfProdGenerator generator) {
ApplicationConfProdResource returned = new ApplicationConfProdResource(generator.getProject());
returned.setGenerator(generator);
returned.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGTextFile cgFile = new CGTextFile(repository, returned);
initCGFile(cgFile, repository.getProjectSymbolicDirectory(), returned);
return registerResource(returned, ApplicationConfProdResource.getDefaultFileName());
}
public static EOEntityJavaFileResource createNewEOEntityJavaFileResource(CGRepository repository, GenericRecordGenerator generator) {
EOEntityJavaFileResource returned = new EOEntityJavaFileResource(generator.getProject());
returned.setGenerator(generator);
returned.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGJavaFile cgFile = new CGJavaFile(repository, returned);
initCGFile(cgFile, repository.getJavaSymbolicDirectory(), returned);
return registerResource(returned, generator.getEntityClassName() + ".java", generator.getEntityFolderPath());
}
/**
* @param repository
* @param generator
* @return
*/
public static EOModelPListFileResource createNewModelPlistFileResource(CGRepository repository, EOModelPListGenerator generator) {
EOModelPListFileResource pListResource = (EOModelPListFileResource) resourceForKeyWithCGFile(generator.getProject(),
ResourceType.PLIST_FILE, GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
if (pListResource == null) {
pListResource = new EOModelPListFileResource(generator.getProject());
pListResource.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
pListResource.setGenerator(generator);
CGPListFile cgFile = new CGPListFile(repository, pListResource);
initCGFile(cgFile, repository.getResourcesSymbolicDirectory(), pListResource);
DMEOModel model = generator.getModel();
String folderPath = model.getDMEOModel().getName();
registerResource(pListResource, EOModelPListFileResource.getDefaultFileName(), folderPath);
logger.info("Created DMEOMODEL PLIST resource " + pListResource.getName());
} else {
pListResource.setGenerator(generator);
logger.info("Successfully retrieved DMEOMODEL PLIST resource " + pListResource.getName());
}
pListResource.registerObserverWhenRequired();
return pListResource;
}
/**
* @param repository
* @param generator
* @return
*/
public static HelpFileResource createNewHelpFileResource(CGRepository repository, HelpGenerator generator) {
HelpFileResource returned = new HelpFileResource(generator.getProject());
returned.setGenerator(generator);
returned.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGTextFile cgFile = new CGTextFile(repository, returned);
initCGFile(cgFile, repository.getResourcesSymbolicDirectory(), returned);
return registerResource(returned, HelpFileResource.getDefaultFileName());
}
/**
* @param repository
* @param generator
* @return
*/
public static LocalizationFileResource createNewLocalizedFileResource(CGRepository repository, LocalizedFileGenerator generator) {
LocalizationFileResource returned = new LocalizationFileResource(generator.getProject());
returned.setGenerator(generator);
returned.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGTextFile cgFile = new CGTextFile(repository, returned);
initCGFile(cgFile, repository.getResourcesSymbolicDirectory(), returned);
return registerResource(returned, LocalizationFileResource.getDefaultFileName(generator.getLanguage()));
}
public static OperationComponentWOFileResource createNewOperationComponentWOFileResource(CGRepository repository,
PageComponentGenerator generator) {
OperationComponentWOFileResource operationWOResource = (OperationComponentWOFileResource) resourceForKeyWithCGFile(
repository.getProject(), ResourceType.WO_FILE,
GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
if (operationWOResource == null) {
operationWOResource = new OperationComponentWOFileResource(generator.getProject());
operationWOResource.setGenerator(generator);
operationWOResource.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGWOFile cgFile = new CGWOFile(repository, operationWOResource);
initCGFile(cgFile, repository.getComponentsSymbolicDirectory(), operationWOResource);
operationWOResource = registerResource(operationWOResource, generator.getComponentClassName() + ".wo");
} else {
operationWOResource.setGenerator(generator);
}
operationWOResource.registerObserverWhenRequired();
return operationWOResource;
}
public static OperationComponentAPIFileResource createNewOperationComponentAPIFileResource(CGRepository repository,
PageComponentGenerator generator) {
OperationComponentAPIFileResource operationAPIResource = (OperationComponentAPIFileResource) resourceForKeyWithCGFile(
repository.getProject(), ResourceType.API_FILE,
GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
if (operationAPIResource == null) {
operationAPIResource = new OperationComponentAPIFileResource(generator.getProject());
operationAPIResource.setGenerator(generator);
operationAPIResource.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGAPIFile cgFile = new CGAPIFile(repository, operationAPIResource);
initCGFile(cgFile, repository.getComponentsSymbolicDirectory(), operationAPIResource);
registerResource(operationAPIResource, generator.getComponentClassName() + ".api");
} else {
operationAPIResource.setGenerator(generator);
}
operationAPIResource.registerObserverWhenRequired();
return operationAPIResource;
}
public static OperationComponentJavaFileResource createNewOperationComponentJavaFileResource(CGRepository repository,
PageComponentGenerator generator) {
OperationComponentJavaFileResource javaResource = (OperationComponentJavaFileResource) resourceForKeyWithCGFile(
repository.getProject(), ResourceType.JAVA_FILE,
GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
if (javaResource == null) {
javaResource = new OperationComponentJavaFileResource(generator.getProject());
javaResource.setGenerator(generator);
javaResource.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGJavaFile cgFile = new CGJavaFile(repository, javaResource);
initCGFile(cgFile, repository.getJavaSymbolicDirectory(), javaResource);
javaResource = registerResource(javaResource, generator.getComponentClassName() + ".java", generator.getComponentFolderPath());
} else {
javaResource.setGenerator(generator);
}
javaResource.registerObserverWhenRequired();
return javaResource;
}
public static PopupComponentAPIFileResource createNewPopupComponentAPIFileResource(CGRepository repository,
PopupComponentGenerator generator) {
PopupComponentAPIFileResource popupAPIResource = (PopupComponentAPIFileResource) resourceForKeyWithCGFile(repository.getProject(),
ResourceType.API_FILE, GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
if (popupAPIResource == null) {
popupAPIResource = new PopupComponentAPIFileResource(generator.getProject());
popupAPIResource.setGenerator(generator);
popupAPIResource.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGAPIFile cgFile = new CGAPIFile(repository, popupAPIResource);
initCGFile(cgFile, repository.getComponentsSymbolicDirectory(), popupAPIResource);
registerResource(popupAPIResource, generator.getComponentClassName() + ".api");
logger.info("Created POPUP API resource " + popupAPIResource.getName());
} else {
popupAPIResource.setGenerator(generator);
logger.info("Successfully retrieved POPUP API resource " + popupAPIResource.getName());
}
popupAPIResource.registerObserverWhenRequired();
return popupAPIResource;
}
public static PopupComponentJavaFileResource createNewPopupComponentJavaFileResource(CGRepository repository,
PopupComponentGenerator generator) {
PopupComponentJavaFileResource javaResource = (PopupComponentJavaFileResource) resourceForKeyWithCGFile(repository.getProject(),
ResourceType.JAVA_FILE, GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
if (javaResource == null) {
javaResource = new PopupComponentJavaFileResource(generator.getProject());
javaResource.setGenerator(generator);
javaResource.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGJavaFile cgFile = new CGJavaFile(repository, javaResource);
initCGFile(cgFile, repository.getJavaSymbolicDirectory(), javaResource);
registerResource(javaResource, generator.getComponentClassName() + ".java", generator.getComponentFolderPath());
} else {
javaResource.setGenerator(generator);
if (logger.isLoggable(Level.FINE)) {
logger.fine("Successfully retrieved POPUP JAVA resource " + javaResource.getName());
}
}
javaResource.registerObserverWhenRequired();
return javaResource;
}
public static PopupComponentWOFileResource createNewPopupComponentWOFileResource(CGRepository repository,
PopupComponentGenerator generator) {
PopupComponentWOFileResource popupWOResource = (PopupComponentWOFileResource) resourceForKeyWithCGFile(repository.getProject(),
ResourceType.WO_FILE, GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
if (popupWOResource == null) {
popupWOResource = new PopupComponentWOFileResource(generator.getProject());
popupWOResource.setGenerator(generator);
popupWOResource.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGWOFile cgFile = new CGWOFile(repository, popupWOResource);
initCGFile(cgFile, repository.getComponentsSymbolicDirectory(), popupWOResource);
registerResource(popupWOResource, generator.getComponentClassName() + ".wo");
logger.info("Created POPUP WO resource " + popupWOResource.getName());
} else {
popupWOResource.setGenerator(generator);
logger.info("Successfully retrieved POPUP WO resource " + popupWOResource.getName());
}
popupWOResource.registerObserverWhenRequired();
return popupWOResource;
}
public static PopupLinkComponentAPIFileResource createNewPopupLinkComponentAPIFileResource(CGRepository repository,
PopupLinkComponentGenerator generator) {
PopupLinkComponentAPIFileResource popupLinkAPIResource = (PopupLinkComponentAPIFileResource) resourceForKeyWithCGFile(
repository.getProject(), ResourceType.API_FILE,
GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
if (popupLinkAPIResource == null) {
popupLinkAPIResource = new PopupLinkComponentAPIFileResource(generator.getProject());
popupLinkAPIResource.setGenerator(generator);
popupLinkAPIResource.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGAPIFile cgFile = new CGAPIFile(repository, popupLinkAPIResource);
initCGFile(cgFile, repository.getComponentsSymbolicDirectory(), popupLinkAPIResource);
registerResource(popupLinkAPIResource, generator.getComponentClassName() + ".api");
logger.info("Created PopupLink API resource " + popupLinkAPIResource.getName());
} else {
popupLinkAPIResource.setGenerator(generator);
logger.info("Successfully retrieved PopupLink API resource " + popupLinkAPIResource.getName());
}
popupLinkAPIResource.registerObserverWhenRequired();
return popupLinkAPIResource;
}
public static PopupLinkComponentJavaFileResource createNewPopupLinkComponentJavaFileResource(CGRepository repository,
PopupLinkComponentGenerator generator) {
PopupLinkComponentJavaFileResource javaResource = (PopupLinkComponentJavaFileResource) resourceForKeyWithCGFile(
repository.getProject(), ResourceType.JAVA_FILE,
GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
if (javaResource == null) {
javaResource = new PopupLinkComponentJavaFileResource(generator.getProject());
javaResource.setGenerator(generator);
javaResource.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGJavaFile cgFile = new CGJavaFile(repository, javaResource);
initCGFile(cgFile, repository.getJavaSymbolicDirectory(), javaResource);
registerResource(javaResource, generator.getComponentClassName() + ".java", generator.getComponentFolderPath());
if (logger.isLoggable(Level.FINE)) {
logger.fine("Created PopupLink JAVA resource " + javaResource.getName());
}
} else {
javaResource.setGenerator(generator);
if (logger.isLoggable(Level.FINE)) {
logger.fine("Successfully retrieved PopupLink JAVA resource " + javaResource.getName());
}
}
javaResource.registerObserverWhenRequired();
return javaResource;
}
public static PopupLinkComponentWOFileResource createNewPopupLinkComponentWOFileResource(CGRepository repository,
PopupLinkComponentGenerator generator) {
PopupLinkComponentWOFileResource popupLinkWOResource = (PopupLinkComponentWOFileResource) resourceForKeyWithCGFile(
repository.getProject(), ResourceType.WO_FILE,
GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
if (popupLinkWOResource == null) {
popupLinkWOResource = new PopupLinkComponentWOFileResource(generator.getProject());
popupLinkWOResource.setGenerator(generator);
popupLinkWOResource.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGWOFile cgFile = new CGWOFile(repository, popupLinkWOResource);
initCGFile(cgFile, repository.getComponentsSymbolicDirectory(), popupLinkWOResource);
registerResource(popupLinkWOResource, generator.getComponentClassName() + ".wo");
logger.info("Created PopupLink WO resource " + popupLinkWOResource.getName());
} else {
popupLinkWOResource.setGenerator(generator);
logger.info("Successfully retrieved PopupLink WO resource " + popupLinkWOResource.getName());
}
popupLinkWOResource.registerObserverWhenRequired();
return popupLinkWOResource;
}
public static ProcessorJavaFileResource createNewProcessorJavaFileResourceForProcess(CGRepository repository,
ControlGraphGenerator generator) {
ProcessorJavaFileResource returned = new ProcessorJavaFileResource(generator.getProject());
returned.setGenerator(generator);
returned.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGJavaFile cgFile = new CGJavaFile(repository, returned);
initCGFile(cgFile, repository.getJavaSymbolicDirectory(), returned);
return registerResource(returned, generator.getEntityClassName() + ".java", generator.getEntityFolderPath());
}
public static ProjectTextFileResource createNewProjectTextFileResource(CGRepository repository, MetaFileGenerator generator) {
ProjectTextFileResource returned = new ProjectTextFileResource(generator.getProject());
returned.setGenerator(generator);
returned.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
returned.setFileType(generator.getFileType());
returned.setResourceFormat(generator.getFileFormat());
CGTextFile cgFile = new CGTextFile(repository, returned);
initCGFile(cgFile, generator.getSymbolicDirectory(repository), returned);
String folderPath = generator.getRelativePath();
return registerResource(returned, returned.getFileName(), folderPath);
}
/**
* @param repository
* @param generator
* @return
*/
public static BuildPropertiesResource createBuildPropertiesFileResource(CGRepository repository, BuildPropertiesGenerator generator) {
BuildPropertiesResource returned = new BuildPropertiesResource(generator.getProject());
returned.setGenerator(generator);
returned.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGTextFile cgFile = new CGTextFile(repository, returned);
initCGFile(cgFile, repository.getProjectSymbolicDirectory(), returned);
return registerResource(returned, BuildPropertiesResource.getDefaultFileName());
}
public static TabComponentAPIFileResource createNewTabComponentAPIFileResource(CGRepository repository, TabComponentGenerator generator) {
TabComponentAPIFileResource tabAPIResource = (TabComponentAPIFileResource) resourceForKeyWithCGFile(repository.getProject(),
ResourceType.API_FILE, GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
if (tabAPIResource == null) {
tabAPIResource = new TabComponentAPIFileResource(generator.getProject());
tabAPIResource.setGenerator(generator);
tabAPIResource.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGAPIFile cgFile = new CGAPIFile(repository, tabAPIResource);
initCGFile(cgFile, repository.getComponentsSymbolicDirectory(), tabAPIResource);
registerResource(tabAPIResource, generator.getComponentClassName() + ".api");
} else {
tabAPIResource.setGenerator(generator);
}
tabAPIResource.registerObserverWhenRequired();
return tabAPIResource;
}
public static TabComponentJavaFileResource createNewTabComponentJavaFileResource(CGRepository repository,
TabComponentGenerator generator) {
TabComponentJavaFileResource javaResource = (TabComponentJavaFileResource) resourceForKeyWithCGFile(repository.getProject(),
ResourceType.JAVA_FILE, GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
if (javaResource == null) {
javaResource = new TabComponentJavaFileResource(generator.getProject());
javaResource.setGenerator(generator);
javaResource.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGJavaFile cgFile = new CGJavaFile(repository, javaResource);
initCGFile(cgFile, repository.getJavaSymbolicDirectory(), javaResource);
registerResource(javaResource, generator.getComponentClassName() + ".java", generator.getComponentFolderPath());
} else {
javaResource.setGenerator(generator);
}
javaResource.registerObserverWhenRequired();
return javaResource;
}
public static TabComponentWOFileResource createNewTabComponentWOFileResource(CGRepository repository, TabComponentGenerator generator) {
TabComponentWOFileResource tabWOResource = (TabComponentWOFileResource) resourceForKeyWithCGFile(repository.getProject(),
ResourceType.WO_FILE, GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
if (tabWOResource == null) {
tabWOResource = new TabComponentWOFileResource(generator.getProject());
tabWOResource.setGenerator(generator);
tabWOResource.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGWOFile cgFile = new CGWOFile(repository, tabWOResource);
initCGFile(cgFile, repository.getComponentsSymbolicDirectory(), tabWOResource);
registerResource(tabWOResource, generator.getComponentClassName() + ".wo");
} else {
tabWOResource.setGenerator(generator);
}
tabWOResource.registerObserverWhenRequired();
return tabWOResource;
}
public static UtilComponentAPIFileResource createNewUtilComponentAPIFileResource(CGRepository repository, MetaWOGenerator generator) {
UtilComponentAPIFileResource returned = new UtilComponentAPIFileResource(generator.getProject());
returned.setGenerator(generator);
returned.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGAPIFile cgFile = new CGAPIFile(repository, returned);
initCGFile(cgFile, repository.getComponentsSymbolicDirectory(), returned);
return registerResource(returned, generator.getComponentClassName() + ".api");
}
public static UtilComponentJavaFileResource createNewUtilComponentJavaFileResource(CGRepository repository, MetaWOGenerator generator) {
UtilComponentJavaFileResource returned = new UtilComponentJavaFileResource(generator.getProject());
returned.setGenerator(generator);
returned.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGJavaFile cgFile = new CGJavaFile(repository, returned);
initCGFile(cgFile, repository.getJavaSymbolicDirectory(), returned);
return registerResource(returned, generator.getComponentClassName() + ".java", generator.getComponentFolderPath());
}
public static UtilComponentWOFileResource createNewUtilComponentWOFileResource(CGRepository repository, MetaWOGenerator generator) {
UtilComponentWOFileResource returned = new UtilComponentWOFileResource(generator.getProject());
returned.setGenerator(generator);
returned.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGWOFile cgFile = new CGWOFile(repository, returned);
initCGFile(cgFile, repository.getComponentsSymbolicDirectory(), returned);
return registerResource(returned, generator.getComponentClassName() + ".wo");
}
public static UtilJavaFileResource createNewUtilJavaFileResource(CGRepository repository, JavaClassGenerator generator) {
UtilJavaFileResource returned = new UtilJavaFileResource(generator.getProject());
returned.setGenerator(generator);
returned.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGJavaFile cgFile = new CGJavaFile(repository, returned);
initCGFile(cgFile, repository.getJavaSymbolicDirectory(), returned);
return registerResource(returned, generator.getEntityClassName() + ".java", generator.getEntityFolderPath());
}
private static void initCGFile(CGFile cgFile, CGSymbolicDirectory symbDir, CGRepositoryFileResource returned) {
GeneratedResourceFileFactory.initCGFile(cgFile, symbDir, returned);
}
private static <FR extends CGRepositoryFileResource> FR registerResource(FR returned, String fileName) {
return GeneratedResourceFileFactory.registerResource(returned, fileName);
}
private static <FR extends CGRepositoryFileResource> FR registerResource(FR returned, String fileName, String folderPath) {
return GeneratedResourceFileFactory.registerResource(returned, fileName, folderPath);
}
/**
* @param repository
* @param generator
* @return
*/
public static EOEntityPListFileResource createNewEntityPlistFileResource(CGRepository repository, EOEntityPListGenerator generator) {
EOEntityPListFileResource pListResource = (EOEntityPListFileResource) resourceForKeyWithCGFile(generator.getProject(),
ResourceType.PLIST_FILE, GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
if (pListResource == null) {
pListResource = new EOEntityPListFileResource(generator.getProject());
pListResource.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
pListResource.setGenerator(generator);
CGPListFile cgFile = new CGPListFile(repository, pListResource);
initCGFile(cgFile, repository.getResourcesSymbolicDirectory(), pListResource);
DMEOEntity entity = generator.getEntity();
String folderPath = entity.getDMEOModel().getName() + '/';
registerResource(pListResource, EOEntityPListFileResource.getDefaultFileName(entity), folderPath);
logger.info("Created DMEOENTITY PLIST resource " + pListResource.getName());
} else {
pListResource.setGenerator(generator);
logger.info("Successfully retrieved DMEOENTITY PLIST resource " + pListResource.getName());
}
pListResource.registerObserverWhenRequired();
return pListResource;
}
public static BPELFileResource createBPELFileResource(CGRepository repository, BPELFileGenerator generator) {
FlexoProject project = generator.getProject();
BPELFileResource returned = new BPELFileResource(project);
returned.setGenerator(generator);
returned.setName(BPELFileResource.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
returned.setFileType(ResourceType.BPEL);
CGTextFile cgFile = new CGTextFile(repository, returned);
initCGFile(cgFile, repository.getResourcesSymbolicDirectory(), returned);
return registerResource(returned, generator.getFileName());
}
public static BPELWSDLFileResource createWSDLFileResource(CGRepository repository, BPELWSDLFileGenerator generator) {
FlexoProject project = generator.getProject();
BPELWSDLFileResource returned = new BPELWSDLFileResource(project);
returned.setGenerator(generator);
returned.setName(BPELWSDLFileResource.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
returned.setFileType(ResourceType.WSDL);
CGTextFile cgFile = new CGTextFile(repository, returned);
initCGFile(cgFile, repository.getResourcesSymbolicDirectory(), returned);
return registerResource(returned, generator.getFileName());
}
public static BPELXSDFileResource createXSDFileResource(CGRepository repository, BPELXSDFileGenerator generator) {
FlexoProject project = generator.getProject();
BPELXSDFileResource returned = new BPELXSDFileResource(project);
returned.setGenerator(generator);
returned.setName(BPELXSDFileResource.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
returned.setFileType(ResourceType.XSD);
CGTextFile cgFile = new CGTextFile(repository, returned);
initCGFile(cgFile, repository.getResourcesSymbolicDirectory(), returned);
return registerResource(returned, generator.getFileName());
}
public static FlexoCopiedResource createNewCopiedFileResource(CGRepository repository, CGFile cgFile,
CGSymbolicDirectory symbolicDirectory, FlexoFileResource resourceToCopy) {
FlexoProject project = resourceToCopy.getProject();
FlexoCopiedResource returned = new FlexoCopiedResource(project, resourceToCopy);
if (repository.getSymbolicDirectories().get(symbolicDirectory.getName()) != symbolicDirectory) {
if (logger.isLoggable(Level.SEVERE)) {
logger.severe("Hu oh!!! you added a file to a repository but you passed a symbolic directory that is not in it? I will continue, but I would expect major failures later");
}
}
cgFile.setResource(returned);
cgFile.setSymbolicDirectory(symbolicDirectory);
repository.addToFiles(cgFile);
returned.setCGFile(cgFile);
return registerResource(returned, resourceToCopy.getFileName());
}
public static FlexoCopyOfFlexoResource createNewFlexoCopyOfFlexoResource(CGRepository repository, ResourceToCopyGenerator generator,
CGSymbolicDirectory symbolicDirectory, FlexoFileResource _source) {
String name = CopyOfFlexoResource.nameForRepositoryAndResource(repository, _source);
FlexoCopyOfFlexoResource copiedFile = (FlexoCopyOfFlexoResource) resourceForKeyWithCGFile(repository.getProject(),
ResourceType.COPIED_FILE, name);
if (copiedFile == null) {
copiedFile = new FlexoCopyOfFlexoResource(_source.getProject(), _source);
copiedFile.setName(name);
CGWebServerImageFile cgFile = new CGWebServerImageFile(repository, copiedFile);
initCGFile(cgFile, symbolicDirectory, copiedFile);
registerResource(copiedFile, _source.getFileName(), generator.getRelativePath());
}
copiedFile.setGenerator(generator);
return copiedFile;
}
public static FlexoCopyOfFileResource createNewFlexoCopyOfFileResource(CGRepository repository,
PackagedResourceToCopyGenerator generator, CGSymbolicDirectory symbolicDirectory, FileResource _source, String folderPath) {
FlexoCopyOfFileResource returned = new FlexoCopyOfFileResource(repository.getProject(), _source);
returned.setGenerator(generator);
returned.setName(CopyOfFileResource.nameForRepositoryAndFileToCopy(repository, _source));
CGWebServerImageFile cgFile = new CGWebServerImageFile(repository, returned);
initCGFile(cgFile, symbolicDirectory, returned);
return registerResource(returned, _source.getName(), folderPath);
}
public static PrototypeProcessBusinessDataSamplesFileResource createNewPrototypeProcessInstanceSamplesResource(CGRepository repository,
PrototypeProcessBusinessDataSamplesGenerator generator) {
PrototypeProcessBusinessDataSamplesFileResource returned = new PrototypeProcessBusinessDataSamplesFileResource(
generator.getProject());
returned.setGenerator(generator);
returned.setName(GeneratorUtils.nameForRepositoryAndIdentifier(repository, generator.getIdentifier()));
CGTextFile cgFile = new CGTextFile(repository, returned);
initCGFile(cgFile, repository.getResourcesSymbolicDirectory(), returned);
return registerResource(returned, generator.getFileName(), generator.getDirectoryPath());
}
}