1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.commons.flatfile.dsl;
18
19 import org.apache.commons.lang3.ClassUtils;
20 import org.apache.commons.lang3.StringUtils;
21
22 /**
23 * Default implementation.
24 * @version $Revision: 1301246 $ $Date: 2012-03-15 17:18:16 -0500 (Thu, 15 Mar 2012) $
25 */
26 public class DefaultEntityNameStrategy implements EntityNameStrategy {
27 private static final String NULL = "null";
28
29 /**
30 * If <code>o</code> is {@code null}, returns {@literal "null"}.
31 * If <code>o</code> is a {@link CharSequence}, its {@link String} value is returned.
32 * If <code>o</code> is a {@link Class}, its uncapitalized short classname is returned.
33 * Otherwise returns uncapitalized short classname of {@code o}.
34 * @param o Object.
35 * @return String entity name.
36 * @see ClassUtils#getShortClassName(Class)
37 */
38 public String getEntityName(Object o) {
39 if (o == null) {
40 return NULL;
41 }
42 if (o instanceof CharSequence) {
43 return o.toString();
44 }
45 final Class<?> c = o instanceof Class<?> ? (Class<?>) o : o.getClass();
46 return StringUtils.uncapitalize(ClassUtils.getShortClassName(c));
47 }
48
49 }