
eu.mihosoft.vrl.reflection.ObjectDescription Maven / Gradle / Ivy
/*
* ObjectDescription.java
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2009–2015 Steinbeis Forschungszentrum (STZ Ölbronn),
* Copyright (c) 2007–2017 by Michael Hoffer
*
* This file is part of Visual Reflection Library (VRL).
*
* VRL is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* as published by the Free Software Foundation.
*
* see: http://opensource.org/licenses/LGPL-3.0
* file://path/to/VRL/src/eu/mihosoft/vrl/resources/license/lgplv3.txt
*
* VRL is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* This version of VRL includes copyright notice and attribution requirements.
* According to the LGPL this information must be displayed even if you modify
* the source code of VRL. Neither the VRL Canvas attribution icon nor any
* copyright statement/attribution may be removed.
*
* Attribution Requirements:
*
* If you create derived work you must do three things regarding copyright
* notice and author attribution.
*
* First, the following text must be displayed on the Canvas:
* "based on VRL source code". In this case the VRL canvas icon must be removed.
*
* Second, the copyright notice must remain. It must be reproduced in any
* program that uses VRL.
*
* Third, add an additional notice, stating that you modified VRL. A suitable
* notice might read
* "VRL source code modified by YourName 2012".
*
* Note, that these requirements are in full accordance with the LGPL v3
* (see 7. Additional Terms, b).
*
* Please cite the publication(s) listed below.
*
* Publications:
*
* M. Hoffer, C. Poliwoda, & G. Wittum. (2013). Visual reflection library:
* a framework for declarative GUI programming on the Java platform.
* Computing and Visualization in Science, 2013, 16(4),
* 181–192. http://doi.org/10.1007/s00791-014-0230-y
*/
package eu.mihosoft.vrl.reflection;
import eu.mihosoft.vrl.annotation.ObjectInfo;
import java.io.Serializable;
import java.util.ArrayList;
/**
* Describes an object with all informations accessible from the Java Reflection
* API, except annotations.
* @author Michael Hoffer <[email protected]>
*/
public final class ObjectDescription implements Serializable {
private static final long serialVersionUID = -6183131209730973578L;
/**
* Object Info
*/
private ObjectInfo info;
/**
* Methods of the object
*/
private ArrayList methods =
new ArrayList();
/**
* Name of the object
*/
private String name = "";
/**
* ID of the object
*/
private int ID = 0;
/**
* Constructor.
*/
public ObjectDescription() {
// code
}
/**
* Constructor.
* @param name name of the object
* @param ID ID of the object
* @param info the object info
* @param methods methods of the object
*/
public ObjectDescription(String name, int ID,
ObjectInfo info,
ArrayList methods) {
setName(name);
setID(ID);
setMethods(methods);
}
/**
* Adds a method to the object
* @param m method that is to be added to the object
*/
public void addMethod(MethodDescription m) {
m.setObjectID(getID());
methods.add(m);
}
/**
* Returns all methods of the object.
* @return all methods of the object
*/
public ArrayList getMethods() {
return methods;
}
/**
* Defines all methods of the object.
* @param methods all methods that are to be added to the object
*/
public void setMethods(ArrayList methods) {
this.methods = methods;
}
/**
* Returns the object ID.
* @return the object ID
*/
public int getID() {
return ID;
}
/**
* Defines the object ID.
* @param ID the object ID
*/
public void setID(int ID) {
this.ID = ID;
}
/**
* Returns the name of the object.
* @return the name of the object
*/
public String getName() {
return name;
}
/**
* Defines the name of the object.
* @param name the name of the object
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the info
*/
public ObjectInfo getInfo() {
return info;
}
/**
* @param info the info to set
*/
public void setInfo(ObjectInfo info) {
this.info = info;
}
// @Override
// protected void finalize() throws Throwable {
//
// System.out.println(getClass().getName() + ": Finalize!!!");
//
// super.finalize();
// }
/**
* Returns a signature string that is unique for each interface except for
* modifiers. VRL generally ignores private methods. Visualizations of
* static and non-static methods are identical. Thus, modifiers are
* not part of the signature.
* @return a unique signature string
*/
public String getSignature() {
String infoString = ";INFO=";
if (info!=null) {
infoString = info.toString();
}
String result="TYPE=CLASS;ID=" + ID + ";NAME=" + name + infoString
+ ";METHODS=[";
for(MethodDescription m : methods) {
result += m.toString() + ";";
}
result+="];";
return result;
}
@Override
public String toString() {
return getSignature();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy