Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
vertigo - simple java starter Copyright (C) 2013, KleeGroup, direction.technique@kleegroup.com (http://www.kleegroup.com) KleeGroup, Centre d'affaire la Boursidiere - BP 159 - 92357 Le Plessis Robinson Cedex - France Licensed 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 io.vertigo.studio.plugins.mda.task;
 
 
 import java.util.List;
 import java.util.Map;
 
Génération des objets relatifs au module Task.

Author(s):
pchretien
 
 public final class TaskGeneratorPlugin extends AbstractGeneratorPlugin {
 
 	private final String targetSubDir;

Constructeur.

Parameters:
targetSubDir Repertoire de generation des fichiers de ce plugin
 
 			@Named("targetSubDir"final String targetSubDir) {
 		//-----
 		this. = targetSubDir;
 	}

 
 	public void generate(final FileConfig taskConfigurationfinal ResultBuilder resultBuilder) {
 		Assertion.checkNotNull(taskConfiguration);
 		Assertion.checkNotNull(resultBuilder);
 		//-----
 		generatePaos(taskConfigurationresultBuilder);
 		generateDaos(taskConfigurationresultBuilder);
 	}

Génération de tous les PAOs.
 
 	private static void generatePaos(final String targetSubDirfinal FileConfig taskConfigfinal ResultBuilder resultBuilder) {
 		//On liste des taches regroupées par Package.
 		for (final Entry<StringList<TaskDefinition>> entry : buildPackageMap().entrySet()) {
 			final Collection<TaskDefinitiontaskDefinitionCollection = entry.getValue();
 			if (!taskDefinitionCollection.isEmpty()) {
 				final String packageName = entry.getKey();
 				generatePao(targetSubDirtaskConfigresultBuildertaskDefinitionCollectionpackageName);
 			}
 		}
 	}

Génération de tous les DAOs.
 
 	private static void generateDaos(final String targetSubDirfinal FileConfig taskConfigurationfinal ResultBuilder resultBuilder) {
 		for (final Entry<DtDefinitionList<TaskDefinition>> entry : builDtDefinitiondMap().entrySet()) {
 			final DtDefinition dtDefinition = entry.getKey();
 			if (dtDefinition.isPersistent()) {
 				//Si DAO est persitant on génère son CRUD.
 				generateDao(targetSubDirtaskConfigurationresultBuilderdtDefinitionentry.getValue());
 			}
 		}
 	}

Génération d'un DAO c'est à dire des taches afférentes à un objet.
	private static void generateDao(final String targetSubDirfinal FileConfig taskConfigurationfinal ResultBuilder resultBuilderfinal DtDefinition dtDefinitionfinal Collection<TaskDefinitiontaskDefinitionCollection) {
		final TemplateDAO dao = new TemplateDAO(taskConfigurationdtDefinitiontaskDefinitionCollection);
		final Map<StringObjectmapRoot = new MapBuilder<StringObject>()
				.put("dao"dao)
		createFileGenerator(taskConfigurationmapRootdao.getClassSimpleName(), targetSubDirdao.getPackageName(), ".java""task/dao.ftl")
				.generateFile(resultBuilder);
	}

Génération d'un PAO c'est à dire des taches afférentes à un package.
	private static void generatePao(final String targetSubDirfinal FileConfig taskConfigurationfinal ResultBuilder resultBuilderfinal Collection<TaskDefinitiontaskDefinitionCollectionfinal String packageName) {
		final TemplatePAO pao = new TemplatePAO(taskConfigurationtaskDefinitionCollectionpackageName);
		final Map<StringObjectmapRoot = new MapBuilder<StringObject>()
				.put("pao"pao)
		createFileGenerator(taskConfigurationmapRootpao.getClassSimpleName(), targetSubDirpao.getPackageName(), ".java""task/pao.ftl")
				.generateFile(resultBuilder);
	}

Stratégie pour savoir si une tache est PAO ou DAO. Si la DT est non null DAO sinon PAO.
	private static DtDefinition getDtDefinition(final TemplateTaskDefinition templateTaskDefinition) {
		if (templateTaskDefinition.isOut()) {
			//si out on regarde si en sortie on a un DTO ou une DTC typé.
			final Domain outDomain = templateTaskDefinition.getOutAttribute().getDomain();
			if (outDomain.hasDtDefinition()) {
				return outDomain.getDtDefinition();
			}
		}
		//Si pad de donnée en sortie on considére PAO.
		return null;
	}
	private static Map<StringList<TaskDefinition>> buildPackageMap() {
		final Collection<TaskDefinitiontaskDefinitions = Home.getDefinitionSpace().getAll(TaskDefinition.class);
		final Map<StringList<TaskDefinition>> taskDefinitionsMap = new LinkedHashMap<>();
		//---
		for (final TaskDefinition taskDefinition : taskDefinitions) {
			final TemplateTaskDefinition templateTaskDefinition = new TemplateTaskDefinition(taskDefinition);
			final DtDefinition dtDefinition = getDtDefinition(templateTaskDefinition);
			// Correction bug : task avec retour DtObject (non persistant) non générée
			//Les taches sont générées dans les pao
			// - si il n'esxiste pas de définition associées à la tache
			// - ou si la définition est considérée comme non persistante.
			final boolean pao = dtDefinition == null || !dtDefinition.isPersistent();
			if (pao) {
				//La tache est liée au package. (PAO)
				List<TaskDefinitionlist = taskDefinitionsMap.get(taskDefinition.getPackageName());
				if (list == null) {
					list = new ArrayList<>();
					taskDefinitionsMap.put(taskDefinition.getPackageName(), list);
				}
				//on ajoute la tache aux taches du package.
				list.add(taskDefinition);
			}
		}
		return taskDefinitionsMap;
	}
		final Collection<TaskDefinitiontaskDefinitions = Home.getDefinitionSpace().getAll(TaskDefinition.class);
		final Map<DtDefinitionList<TaskDefinition>> taskDefinitionsMap = new LinkedHashMap<>();
		//---
		//Par défaut, On crée pour chaque DT une liste vide des taches lui étant associées.
		final Collection<DtDefinitiondtDefinitions = Home.getDefinitionSpace().getAll(DtDefinition.class);
		for (final DtDefinition dtDefinition : dtDefinitions) {
			taskDefinitionsMap.put(dtDefinitionnew ArrayList<TaskDefinition>());
		}
		//---
		for (final TaskDefinition taskDefinition : taskDefinitions) {
			final TemplateTaskDefinition templateTaskDefinition = new TemplateTaskDefinition(taskDefinition);
			final DtDefinition dtDefinition = getDtDefinition(templateTaskDefinition);
			final boolean dao = dtDefinition != null;
			if (dao) {
				//Dans le cas d'un DTO ou DTC en sortie on considère que la tache est liée au DAO.
				taskDefinitionsMap.get(dtDefinition).add(taskDefinition);
			}
		}
		return taskDefinitionsMap;
	}
New to GrepCode? Check out our FAQ X