/* * Copyright (c) 2013 Evolveum * * 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 com.evolveum.midpoint.prism.maven; import com.evolveum.midpoint.prism.ComplexTypeDefinition; import com.evolveum.midpoint.prism.Definition; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismObjectDefinition; import com.evolveum.midpoint.prism.schema.PrismSchema; import javax.xml.namespace.QName; import java.io.File; /** * @author semancik */ public class PathGenerator { private final File outDir; public PathGenerator(File outDir) { this.outDir = outDir; } public File prepareSchemaOutputFile(PrismSchema schema) { File schemaOutDir = getSchemaDir(schema); if (!schemaOutDir.exists()) { schemaOutDir.mkdirs(); } return new File(schemaOutDir, "index.html"); } private File getSchemaDir(PrismSchema schema) { return new File(outDir, getSchemaDirName(schema)); } public File prepareObjectDefinitionOutputFile(PrismSchema schema, PrismObjectDefinition definition) { return prepareDefinitionOutputFile(schema, definition, "object"); } public File prepareTypeDefinitionOutputFile(PrismSchema schema, ComplexTypeDefinition definition) { return prepareDefinitionOutputFile(schema, definition, "type"); } private File prepareDefinitionOutputFile(PrismSchema schema, Definition definition, String subDirName) { File schemaOutputDir = getSchemaDir(schema); File subDir = new File(schemaOutputDir, subDirName); if (!subDir.exists()) { subDir.mkdirs(); } return new File(subDir, definition.getTypeName().getLocalPart() + ".html"); } public String schemaUrl(PrismSchema schema) { return getSchemaDirName(schema)+"/index.html"; } public String objectDefinitionUrl(PrismObjectDefinition objDef) { return "object/"+getTypeBaseName(objDef)+".html"; } public String typeDefinitionUrl(ComplexTypeDefinition typeDef) { return "type/"+getTypeBaseName(typeDef)+".html"; } public String typeDefinitionUrl(QName typeName, String prefixToBase, PrismContext prismContext) { String namespaceURI = typeName.getNamespaceURI(); PrismSchema schema = prismContext.getSchemaRegistry().findSchemaByNamespace(namespaceURI); if (schema == null) { return null; } return prefixToBase+"/"+getSchemaDirName(schema)+"/type/"+typeName.getLocalPart()+".html"; } private String getTypeBaseName(Definition def) { return def.getTypeName().getLocalPart(); } private String getSchemaDirName(PrismSchema schema) { String namespace = schema.getNamespace(); String filenamedNamespace = toFilename(namespace); return filenamedNamespace; } public File prepareSchemaIndexOutputFile() { return new File(outDir, "index.html"); } private String toFilename(String namespace) { return namespace.replaceAll("[^a-zA-Z0-9_-]","-"); } }