/** * Copyright 2004-2016 Riccardo Solmi. All rights reserved. * This file is part of the Whole Platform. * * The Whole Platform is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The Whole Platform 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with the Whole Platform. If not, see <http://www.gnu.org/licenses/>. */ package org.whole.lang.pojo.util; import org.whole.lang.bindings.BindingManagerFactory; import org.whole.lang.bindings.IBindingManager; import org.whole.lang.matchers.Matcher; import org.whole.lang.misc.model.Misc; import org.whole.lang.models.model.Model; import org.whole.lang.operations.NormalizerOperation; import org.whole.lang.pojo.model.Library; import org.whole.lang.pojo.templates.JavaModelToPojoModelQuery; import org.whole.lang.pojo.templates.PojoModelToModelsQuery; import org.whole.lang.queries.model.PathExpression; import org.whole.lang.reflect.AbstractLanguageKit; import org.whole.lang.util.BehaviorUtils; import org.whole.lang.util.EntityUtils; /** * @author Enrico Persiani */ public class PojoMappingUtils { public static String calculateLibraryURI(String libraryName) { return AbstractLanguageKit.defaultURI(libraryName); } public static Library getLibrary(Misc compilationUnits, String libraryName) { return getLibrary(compilationUnits, libraryName, calculateLibraryURI(libraryName)); } public static Library getLibrary(Misc compilationUnits, String libraryName, String libraryLanguageURI) { return getLibrary(compilationUnits, libraryName, libraryLanguageURI, true); } public static Library getLibrary(Misc compilationUnits, String libraryName, String libraryLanguageURI, boolean generatePropertyTemplates) { IBindingManager bindings = BindingManagerFactory.instance.createBindingManager(); bindings.wDefValue("libraryName", libraryName); bindings.wDefValue("libraryLanguageURI", libraryLanguageURI); if (generatePropertyTemplates) bindings.wDefValue("generatePropertyTemplates", true); Library library = getLibrary(compilationUnits, bindings); return library; } public static Library getLibrary(Misc compilationUnits, IBindingManager bindings) { PathExpression javaModelToPojoModel = new JavaModelToPojoModelQuery().create(); Library library = BehaviorUtils.<Library>evaluateFirstResult(javaModelToPojoModel, compilationUnits, bindings); Matcher.removeVars(library, true); return library; } public static Model getModel(Library library) { IBindingManager bindings = BindingManagerFactory.instance.createBindingManager(); PathExpression pojoModelToModels = new PojoModelToModelsQuery().create(); Library normalizedLibrary = NormalizerOperation.normalize(EntityUtils.clone(library)); Model model = BehaviorUtils.<Model>evaluateFirstResult(pojoModelToModels, normalizedLibrary, bindings); Matcher.removeVars(model, true); return model; } }