package cloudone.internal;
import cloudone.ApplicationInfo;
import cloudone.C1Application;
/**
* @author Martin Mares (martin.mares at oracle.com)
*/
public class ApplicationInfoImpl implements ApplicationInfo {
private static final String[] COMMON_NAME_SUFIXES = new String[] {"c1application", "application", "app"};
private final C1Application application;
private final String name;
private int port;
public ApplicationInfoImpl(C1Application application, int port) {
this.application = application;
this.name = constructApplicationName(application);
this.port = port;
}
public ApplicationInfoImpl(C1Application application) {
this(application, -1);
}
public ApplicationInfoImpl(Class<C1Application> appClass) throws IllegalAccessException, InstantiationException {
this(appClass.newInstance());
}
private static String constructApplicationName(C1Application application) {
if (application == null) {
return "";
}
String result = application.getClass().getSimpleName();
String sResult = result.toLowerCase();
for (String commonNameSufix : COMMON_NAME_SUFIXES) {
if (result.toLowerCase().endsWith(commonNameSufix) && result.length() > commonNameSufix.length()) {
result = result.substring(0, result.length() - commonNameSufix.length());
break;
}
}
return result;
}
public C1Application getApplication() {
return application;
}
public String getName() {
return name;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
}