001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.commons.jci.utils;
019
020 import java.io.File;
021 import java.util.Locale;
022
023 /**
024 * Mainly common path manipultation helper methods
025 * NOT FOR USE OUTSIDE OF JCI
026 *
027 * @author tcurdt
028 */
029 public final class ConversionUtils {
030
031 /**
032 * Please do not use - internal
033 * org/my/Class.xxx -> org.my.Class
034 */
035 public static String convertResourceToClassName( final String pResourceName ) {
036 return ConversionUtils.stripExtension(pResourceName).replace('/', '.');
037 }
038
039 /**
040 * Please do not use - internal
041 * org.my.Class -> org/my/Class.class
042 */
043 public static String convertClassToResourcePath( final String pName ) {
044 return pName.replace('.', '/') + ".class";
045 }
046
047 /**
048 * Please do not use - internal
049 * org/my/Class.xxx -> org/my/Class
050 */
051 public static String stripExtension( final String pResourceName ) {
052 final int i = pResourceName.lastIndexOf('.');
053 if (i < 0) {
054 return pResourceName;
055 }
056 final String withoutExtension = pResourceName.substring(0, i);
057 return withoutExtension;
058 }
059
060 public static String toJavaCasing(final String pName) {
061 final char[] name = pName.toLowerCase(Locale.US).toCharArray();
062 name[0] = Character.toUpperCase(name[0]);
063 return new String(name);
064 }
065
066 /*
067 public static String clazzName( final File base, final File file ) {
068 final int rootLength = base.getAbsolutePath().length();
069 final String absFileName = file.getAbsolutePath();
070 final int p = absFileName.lastIndexOf('.');
071 final String relFileName = absFileName.substring(rootLength + 1, p);
072 final String clazzName = relFileName.replace(File.separatorChar, '.');
073 return clazzName;
074 }
075 */
076 public static String relative( final File base, final File file ) {
077 final int rootLength = base.getAbsolutePath().length();
078 final String absFileName = file.getAbsolutePath();
079 final String relFileName = absFileName.substring(rootLength + 1);
080 return relFileName;
081 }
082
083 /**
084 * a/b/c.java -> a/b/c.java
085 * a\b\c.java -> a/b/c.java
086 * @param pFileName
087 * @return the converted name
088 */
089 public static String getResourceNameFromFileName( final String pFileName ) {
090 if ('/' == File.separatorChar) {
091 return pFileName;
092 }
093
094 return pFileName.replace(File.separatorChar, '/');
095 }
096
097 }