/* * Copyright (C) 2007-2012 Argeo GmbH * * 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 org.argeo.slc.client.ui.dist.utils; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.jcr.PropertyType; import javax.jcr.RepositoryException; import javax.jcr.Value; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.slc.SlcException; import org.argeo.slc.SlcNames; import org.argeo.slc.SlcTypes; import org.argeo.slc.client.ui.dist.DistConstants; public class DistUiHelpers implements DistConstants, SlcTypes, SlcNames { private final static Log log = LogFactory.getLog(DistUiHelpers.class); private final static DateFormat df = new SimpleDateFormat(DATE_TIME_FORMAT); /** * Returns a user-friendly label for a given jcr property name. If the * corresponding mapping is not found, the input String is returned. If * input String is null "(No name)" is returned */ public static String getLabelJcrName(String jcrName) { return (String) getLabelAndDefaultValueWidth(jcrName)[0]; } /** * Returns a label ( (String) object[0] )and default value width ( (int) * object[1] ) for a given property name */ public static Object[] getLabelAndDefaultValueWidth(String propertyName) { // to avoid npe : if (propertyName == null) return new Object[] { "(No name)", 60 }; // ArtifactId if (propertyName.equals(SLC_ARTIFACT + "." + SLC_ARTIFACT_ID) || propertyName.equals(SLC_ARTIFACT_BASE + "." + SLC_ARTIFACT_ID) || propertyName.equals(SLC_ARTIFACT_VERSION_BASE + "." + SLC_ARTIFACT_ID) || propertyName.equals(SLC_ARTIFACT_ID)) { return new Object[] { "Artifact ID", 200 }; } // GroupId else if (propertyName.equals(SLC_ARTIFACT + "." + SLC_GROUP_ID) || propertyName.equals(SLC_ARTIFACT_BASE + "." + SLC_GROUP_ID) || propertyName.equals(SLC_ARTIFACT_VERSION_BASE + "." + SLC_GROUP_ID) || propertyName.equals(SLC_GROUP_ID)) { return new Object[] { "Group ID", 120 }; } // Version else if (propertyName.equals(SLC_ARTIFACT + "." + SLC_ARTIFACT_VERSION) || propertyName.equals(SLC_ARTIFACT_VERSION_BASE + "." + SLC_ARTIFACT_VERSION) || propertyName.equals(SLC_ARTIFACT_VERSION)) { return new Object[] { "Version", 60 }; } else if (propertyName.equals(SLC_ARTIFACT + "." + SLC_ARTIFACT_CLASSIFIER) || propertyName.equals(SLC_ARTIFACT_CLASSIFIER)) { return new Object[] { "Classifier", 60 }; } else if (propertyName.equals(SLC_ARTIFACT + "." + SLC_ARTIFACT_EXTENSION) || propertyName.equals(SLC_ARTIFACT_EXTENSION)) { return new Object[] { "Type", 40 }; } else if (propertyName.equals(SLC_BUNDLE_ARTIFACT + "." + SLC_SYMBOLIC_NAME) || propertyName.equals(SLC_SYMBOLIC_NAME)) { return new Object[] { "Symbolic name", 180 }; } else if (propertyName.equals(SLC_BUNDLE_ARTIFACT + "." + SLC_BUNDLE_VERSION) || propertyName.equals(SLC_BUNDLE_VERSION)) { return new Object[] { "Bundle version", 120 }; } else if (propertyName .equals(SLC_BUNDLE_ARTIFACT + "." + SLC_MANIFEST) || propertyName.equals(SLC_MANIFEST)) { return new Object[] { "Manifest", 60 }; } // TODO remove hard coded strings else if (propertyName.equals("slc:Bundle-ManifestVersion")) { return new Object[] { "Bundle Manifest Version", 60 }; } else if (propertyName.equals("slc:Manifest-Version")) { return new Object[] { "Manifest Version", 60 }; } else if (propertyName.equals("slc:Bundle-Vendor")) { return new Object[] { "Bundle Vendor", 60 }; } else if (propertyName.equals("slc:Bundle-SymbolicName")) { return new Object[] { "Bundle symbolic name", 60 }; } else if (propertyName.equals("slc:Bundle-Name")) { return new Object[] { "Bundle name", 60 }; } else if (propertyName.equals("slc:Bundle-DocURL")) { return new Object[] { "Doc URL", 120 }; } else if (propertyName.equals("slc:Bundle-Licence")) { return new Object[] { "Bundle licence", 120 }; } else if (propertyName.equals(SLC_ARTIFACT_VERSION_BASE + "." + JCR_IDENTIFIER)) { return new Object[] { "UUID", 0 }; } else { if (log.isTraceEnabled()) log.trace("No Column label provider defined for property: [" + propertyName + "]"); return new Object[] { propertyName, 60 }; } } public static String formatValueAsString(Value value) { try { String strValue; if (value.getType() == PropertyType.BINARY) strValue = ""; else if (value.getType() == PropertyType.DATE) strValue = df.format(value.getDate().getTime()); else strValue = value.getString(); return strValue; } catch (RepositoryException e) { throw new SlcException("unexpected error while formatting value", e); } } public static String formatAsString(Object value) { String strValue; if (value instanceof Calendar) strValue = df.format(((Calendar) value).getTime()); else strValue = value.toString(); return strValue; } }