package schedframe.resources.computing; import schedframe.Parameters; import schedframe.resources.computing.location.Location; public class ResourceCharacteristics /*extends Properties*/{ private static final long serialVersionUID = 2719535186621622647L; protected Location location; protected Parameters parameters; //protected Location location; //protected List devices; /*public ResourceCharacteristics(Map> resUnits){ this.resUnits = resUnits; } public ResourceCharacteristics(){ this.resUnits = null; } public ResourceCharacteristics(Map> resUnits, Parameters parameters){ this(resUnits); }*/ public Parameters getParameters() { if(parameters == null) return new Parameters(2); return parameters; } public Location getLocation() { return location; } protected ResourceCharacteristics(Builder builder) { //this.location = builder.location; this.parameters = builder.parameters; this.location = builder.location; //this.devices = builder.devices; } public static abstract class Builder> { protected Location location; protected Parameters parameters; public T parameters(Parameters params){this.parameters = params; return self(); } public T location(Location loc){this.location = loc; return self(); } protected abstract T self(); public ResourceCharacteristics build() { return new ResourceCharacteristics(this); } } private static class Builder2 extends Builder { @Override protected Builder2 self() { return this; } } public static Builder builder() { return new Builder2(); } /*public static class Builder { protected Map> resUnits; //protected Location location; protected Parameters parameters; //protected List devices; //public Builder location(Location loc){this.location = loc; return this; } public Builder parameters(Parameters params){this.parameters = params; return this; } //public Builder device(List dev){this.devices = dev; return this; } public Builder resourceUnits(Map> units){this.resUnits = units; return this; } public Builder resourceUnits(){this.resUnits = new HashMap>(2); return this; } public ResourceCharacteristics build() { return new ResourceCharacteristics(this); } } */ }