/******************************************************************************* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 org.apache.ofbiz.entity.model; import java.util.Locale; import java.util.TimeZone; import org.apache.ofbiz.base.lang.ThreadSafe; import org.apache.ofbiz.base.util.StringUtil; import org.apache.ofbiz.base.util.UtilDateTime; import org.apache.ofbiz.base.util.UtilXml; import org.w3c.dom.Element; /** * An object that models the <code><entitymodel></code> child elements that provide default values. * */ @ThreadSafe public final class ModelInfo { public static final ModelInfo DEFAULT = new ModelInfo("None", "None", getCopyrightString(), "None", "1.0", ""); /** * Returns a new <code>ModelInfo</code> instance initialized to the values found in <code>element</code> attributes. * * @param defaultInfo A <code>ModelInfo</code> instance that will provide default values for missing attributes. * @param element */ public static ModelInfo createFromAttributes(ModelInfo defaultInfo, Element element) { String title = element.getAttribute("title").intern(); if (title.isEmpty()) { title = defaultInfo.getTitle(); } String description = StringUtil.internString(UtilXml.childElementValue(element, "description")); if (description == null || description.isEmpty()) { description = defaultInfo.getDescription(); } String copyright = element.getAttribute("copyright").intern(); if (copyright.isEmpty()) { copyright = defaultInfo.getCopyright(); } String author = element.getAttribute("author").intern(); if (author.isEmpty()) { author = defaultInfo.getAuthor(); } String version = element.getAttribute("version").intern(); if (version.isEmpty()) { version = defaultInfo.getVersion(); } String defaultResourceName = StringUtil.internString(element.getAttribute("default-resource-name")); if (defaultResourceName.isEmpty()) { defaultResourceName = defaultInfo.getDefaultResourceName(); } return new ModelInfo(title, description, copyright, author, version, defaultResourceName); } /** * Returns a new <code>ModelInfo</code> instance initialized to the values found in <code>element</code> child elements. * * @param defaultInfo A <code>ModelInfo</code> instance that will provide default values for missing child elements. * @param element */ public static ModelInfo createFromElements(ModelInfo defaultInfo, Element element) { String title = StringUtil.internString(UtilXml.childElementValue(element, "title")); if (title == null || title.isEmpty()) { title = defaultInfo.getTitle(); } String description = StringUtil.internString(UtilXml.childElementValue(element, "description")); if (description == null || description.isEmpty()) { description = defaultInfo.getDescription(); } String copyright = StringUtil.internString(UtilXml.childElementValue(element, "copyright")); if (copyright == null || copyright.isEmpty()) { copyright = defaultInfo.getCopyright(); } String author = StringUtil.internString(UtilXml.childElementValue(element, "author")); if (author == null ||author.isEmpty()) { author = defaultInfo.getAuthor(); } String version = StringUtil.internString(UtilXml.childElementValue(element, "version")); if (version == null || version.isEmpty()) { version = defaultInfo.getVersion(); } String defaultResourceName = StringUtil.internString(UtilXml.childElementValue(element, "default-resource-name")); if (defaultResourceName == null || defaultResourceName.isEmpty()) { defaultResourceName = defaultInfo.getDefaultResourceName(); } return new ModelInfo(title, description, copyright, author, version, defaultResourceName); } private static String getCopyrightString() { int year = UtilDateTime.getYear(UtilDateTime.nowTimestamp(), TimeZone.getDefault(), Locale.getDefault()); return "Copyright 2001-" + year + " The Apache Software Foundation"; } /* * Developers - this is an immutable class. Once constructed, the object should not change state. * Therefore, 'setter' methods are not allowed. If client code needs to modify the object's * state, then it can create a new copy with the changed values. */ /** The title for documentation purposes */ private final String title; /** The description for documentation purposes */ private final String description; /** The copyright for documentation purposes */ private final String copyright; /** The author for documentation purposes */ private final String author; /** The version for documentation purposes */ private final String version; /** The default-resource-name of the Entity, used with the getResource call to check for a value in a resource bundle */ private final String defaultResourceName; ModelInfo(String title, String description, String copyright, String author, String version, String defaultResourceName) { this.title = title; this.description = description; this.copyright = copyright; this.author = author; this.version = version; this.defaultResourceName = defaultResourceName; } /** Returns the author. */ public String getAuthor() { return this.author; } /** Returns the copyright. */ public String getCopyright() { return this.copyright; } /** Returns the default resource name. */ public String getDefaultResourceName() { return this.defaultResourceName; } /** Returns the description. */ public String getDescription() { return this.description; } /** Returns the title. */ public String getTitle() { return this.title; } /** Returns the version. */ public String getVersion() { return this.version; } }