All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.dekorate.halkyon.model.ComponentSpecFluentImpl Maven / Gradle / Ivy

There is a newer version: 2.0.0.beta2
Show newest version
package io.dekorate.halkyon.model;

import io.dekorate.deps.kubernetes.api.builder.VisitableBuilder;
import java.lang.StringBuilder;
import io.dekorate.deps.kubernetes.api.builder.Nested;
import java.util.ArrayList;
import java.lang.String;
import io.dekorate.deps.kubernetes.api.builder.Predicate;
import java.lang.Deprecated;
import io.dekorate.deps.kubernetes.api.builder.BaseFluent;
import java.util.Iterator;
import java.util.List;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.StringBuffer;
import java.util.Collection;
import java.lang.Object;

public class ComponentSpecFluentImpl> extends BaseFluent implements ComponentSpecFluent {

    private DeploymentMode deploymentMode;
    private String runtime;
    private String version;
    private boolean exposeService;
    private Integer port;
    private StorageBuilder storage;
    private List envs;
    private BuildConfigBuilder buildConfig;
    private CapabilitiesBuilder capabilities;

    public ComponentSpecFluentImpl() { 
    }


    public ComponentSpecFluentImpl(ComponentSpec instance) { 
        this.withDeploymentMode(instance.getDeploymentMode()); 
        this.withRuntime(instance.getRuntime()); 
        this.withVersion(instance.getVersion()); 
        this.withExposeService(instance.isExposeService()); 
        this.withPort(instance.getPort()); 
        this.withStorage(instance.getStorage()); 
        this.withEnvs(instance.getEnvs()); 
        this.withBuildConfig(instance.getBuildConfig()); 
        this.withCapabilities(instance.getCapabilities()); 
    }


    public DeploymentMode getDeploymentMode() {
        return this.deploymentMode;
    }

    public A withDeploymentMode(DeploymentMode deploymentMode) {
        this.deploymentMode=deploymentMode; return (A) this;
    }

    public Boolean hasDeploymentMode() {
        return this.deploymentMode != null;
    }

    public String getRuntime() {
        return this.runtime;
    }

    public A withRuntime(String runtime) {
        this.runtime=runtime; return (A) this;
    }

    public Boolean hasRuntime() {
        return this.runtime != null;
    }

    public A withNewRuntime(String arg1) {
        return (A)withRuntime(new String(arg1));
    }

    public A withNewRuntime(StringBuilder arg1) {
        return (A)withRuntime(new String(arg1));
    }

    public A withNewRuntime(StringBuffer arg1) {
        return (A)withRuntime(new String(arg1));
    }

    public String getVersion() {
        return this.version;
    }

    public A withVersion(String version) {
        this.version=version; return (A) this;
    }

    public Boolean hasVersion() {
        return this.version != null;
    }

    public A withNewVersion(String arg1) {
        return (A)withVersion(new String(arg1));
    }

    public A withNewVersion(StringBuilder arg1) {
        return (A)withVersion(new String(arg1));
    }

    public A withNewVersion(StringBuffer arg1) {
        return (A)withVersion(new String(arg1));
    }

    public boolean isExposeService() {
        return this.exposeService;
    }

    public A withExposeService(boolean exposeService) {
        this.exposeService=exposeService; return (A) this;
    }

    public Boolean hasExposeService() {
        return true;
    }

    public Integer getPort() {
        return this.port;
    }

    public A withPort(Integer port) {
        this.port=port; return (A) this;
    }

    public Boolean hasPort() {
        return this.port != null;
    }

    
/**
 * This method has been deprecated, please use method buildStorage instead.
 * @return The buildable object.
 */
@Deprecated public Storage getStorage() {
        return this.storage!=null?this.storage.build():null;
    }

    public Storage buildStorage() {
        return this.storage!=null?this.storage.build():null;
    }

    public A withStorage(Storage storage) {
        _visitables.get("storage").remove(this.storage);
        if (storage!=null){ this.storage= new StorageBuilder(storage); _visitables.get("storage").add(this.storage);} return (A) this;
    }

    public Boolean hasStorage() {
        return this.storage != null;
    }

    public A withNewStorage(String name,String capacity,String mode) {
        return (A)withStorage(new Storage(name, capacity, mode));
    }

    public ComponentSpecFluent.StorageNested withNewStorage() {
        return new StorageNestedImpl();
    }

    public ComponentSpecFluent.StorageNested withNewStorageLike(Storage item) {
        return new StorageNestedImpl(item);
    }

    public ComponentSpecFluent.StorageNested editStorage() {
        return withNewStorageLike(getStorage());
    }

    public ComponentSpecFluent.StorageNested editOrNewStorage() {
        return withNewStorageLike(getStorage() != null ? getStorage(): new StorageBuilder().build());
    }

    public ComponentSpecFluent.StorageNested editOrNewStorageLike(Storage item) {
        return withNewStorageLike(getStorage() != null ? getStorage(): item);
    }

    public A withEnvs(Env... envs) {
        if (this.envs != null) {this.envs.clear();}
        if (envs != null) {for (Env item :envs){ this.addToEnvs(item);}} return (A) this;
    }

    
/**
 * This method has been deprecated, please use method buildEnvs instead.
 */
@Deprecated public Env[] getEnvs() {
        int size = envs != null ? envs.size() : 0;
Env[] result = new Env[size];
if (size == 0) {
   return result;
}
int index = 0;
for (VisitableBuilder builder : envs) {
    result[index++]=builder.build();
}
return result;

    }

    public Env[] buildEnvs() {
        int size = envs != null ? envs.size() : 0;
Env[] result = new Env[size];
if (size == 0) {
   return result;
}
int index = 0;
for (VisitableBuilder builder : envs) {
    result[index++]=builder.build();
}
return result;

    }

    public Env buildEnv(int index) {
        return this.envs.get(index).build();
    }

    public Env buildFirstEnv() {
        return this.envs.get(0).build();
    }

    public Env buildLastEnv() {
        return this.envs.get(envs.size() - 1).build();
    }

    public Env buildMatchingEnv(io.dekorate.deps.kubernetes.api.builder.Predicate predicate) {
        for (EnvBuilder item: envs) { if(predicate.apply(item)){ return item.build();} } return null;
    }

    public Boolean hasMatchingEnv(io.dekorate.deps.kubernetes.api.builder.Predicate predicate) {
        for (EnvBuilder item: envs) { if(predicate.apply(item)){ return true;} } return false;
    }

    public A addToEnvs(int index,Env item) {
        if (this.envs == null) {this.envs = new ArrayList();}
        EnvBuilder builder = new EnvBuilder(item);_visitables.get("envs").add(index >= 0 ? index : _visitables.get("envs").size(), builder);this.envs.add(index >= 0 ? index : envs.size(), builder); return (A)this;
    }

    public A setToEnvs(int index,Env item) {
        if (this.envs == null) {this.envs = new ArrayList();}
        EnvBuilder builder = new EnvBuilder(item);
        if (index < 0 || index >= _visitables.get("envs").size()) { _visitables.get("envs").add(builder); } else { _visitables.get("envs").set(index, builder);}
        if (index < 0 || index >= envs.size()) { envs.add(builder); } else { envs.set(index, builder);}
         return (A)this;
    }

    public A addToEnvs(Env... items) {
        if (this.envs == null) {this.envs = new ArrayList();}
        for (Env item : items) {EnvBuilder builder = new EnvBuilder(item);_visitables.get("envs").add(builder);this.envs.add(builder);} return (A)this;
    }

    public A addAllToEnvs(Collection items) {
        if (this.envs == null) {this.envs = new ArrayList();}
        for (Env item : items) {EnvBuilder builder = new EnvBuilder(item);_visitables.get("envs").add(builder);this.envs.add(builder);} return (A)this;
    }

    public A removeFromEnvs(Env... items) {
        for (Env item : items) {EnvBuilder builder = new EnvBuilder(item);_visitables.get("envs").remove(builder);if (this.envs != null) {this.envs.remove(builder);}} return (A)this;
    }

    public A removeAllFromEnvs(Collection items) {
        for (Env item : items) {EnvBuilder builder = new EnvBuilder(item);_visitables.get("envs").remove(builder);if (this.envs != null) {this.envs.remove(builder);}} return (A)this;
    }

    public A removeMatchingFromEnvs(io.dekorate.deps.kubernetes.api.builder.Predicate predicate) {
        if (envs == null) return (A) this;
        final Iterator each = envs.iterator();
        final List visitables = _visitables.get("envs");
        while (each.hasNext()) {
          EnvBuilder builder = each.next();
          if (predicate.apply(builder)) {
            visitables.remove(builder);
            each.remove();
          }
        }
        return (A)this;
    }

    public Boolean hasEnvs() {
        return envs != null && !envs.isEmpty();
    }

    public A addNewEnv(String name,String value) {
        return (A)addToEnvs(new Env(name, value));
    }

    public ComponentSpecFluent.EnvsNested addNewEnv() {
        return new EnvsNestedImpl();
    }

    public ComponentSpecFluent.EnvsNested addNewEnvLike(Env item) {
        return new EnvsNestedImpl(-1, item);
    }

    public ComponentSpecFluent.EnvsNested setNewEnvLike(int index,Env item) {
        return new EnvsNestedImpl(index, item);
    }

    public ComponentSpecFluent.EnvsNested editEnv(int index) {
        if (envs.size() <= index) throw new RuntimeException("Can't edit envs. Index exceeds size.");
        return setNewEnvLike(index, buildEnv(index));
    }

    public ComponentSpecFluent.EnvsNested editFirstEnv() {
        if (envs.size() == 0) throw new RuntimeException("Can't edit first envs. The list is empty.");
        return setNewEnvLike(0, buildEnv(0));
    }

    public ComponentSpecFluent.EnvsNested editLastEnv() {
        int index = envs.size() - 1;
        if (index < 0) throw new RuntimeException("Can't edit last envs. The list is empty.");
        return setNewEnvLike(index, buildEnv(index));
    }

    public ComponentSpecFluent.EnvsNested editMatchingEnv(io.dekorate.deps.kubernetes.api.builder.Predicate predicate) {
        int index = -1;
        for (int i=0;i withNewBuildConfig() {
        return new BuildConfigNestedImpl();
    }

    public ComponentSpecFluent.BuildConfigNested withNewBuildConfigLike(BuildConfig item) {
        return new BuildConfigNestedImpl(item);
    }

    public ComponentSpecFluent.BuildConfigNested editBuildConfig() {
        return withNewBuildConfigLike(getBuildConfig());
    }

    public ComponentSpecFluent.BuildConfigNested editOrNewBuildConfig() {
        return withNewBuildConfigLike(getBuildConfig() != null ? getBuildConfig(): new BuildConfigBuilder().build());
    }

    public ComponentSpecFluent.BuildConfigNested editOrNewBuildConfigLike(BuildConfig item) {
        return withNewBuildConfigLike(getBuildConfig() != null ? getBuildConfig(): item);
    }

    
/**
 * This method has been deprecated, please use method buildCapabilities instead.
 * @return The buildable object.
 */
@Deprecated public Capabilities getCapabilities() {
        return this.capabilities!=null?this.capabilities.build():null;
    }

    public Capabilities buildCapabilities() {
        return this.capabilities!=null?this.capabilities.build():null;
    }

    public A withCapabilities(Capabilities capabilities) {
        _visitables.get("capabilities").remove(this.capabilities);
        if (capabilities!=null){ this.capabilities= new CapabilitiesBuilder(capabilities); _visitables.get("capabilities").add(this.capabilities);} return (A) this;
    }

    public Boolean hasCapabilities() {
        return this.capabilities != null;
    }

    public ComponentSpecFluent.CapabilitiesNested withNewCapabilities() {
        return new CapabilitiesNestedImpl();
    }

    public ComponentSpecFluent.CapabilitiesNested withNewCapabilitiesLike(Capabilities item) {
        return new CapabilitiesNestedImpl(item);
    }

    public ComponentSpecFluent.CapabilitiesNested editCapabilities() {
        return withNewCapabilitiesLike(getCapabilities());
    }

    public ComponentSpecFluent.CapabilitiesNested editOrNewCapabilities() {
        return withNewCapabilitiesLike(getCapabilities() != null ? getCapabilities(): new CapabilitiesBuilder().build());
    }

    public ComponentSpecFluent.CapabilitiesNested editOrNewCapabilitiesLike(Capabilities item) {
        return withNewCapabilitiesLike(getCapabilities() != null ? getCapabilities(): item);
    }

    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        ComponentSpecFluentImpl that = (ComponentSpecFluentImpl) o;
        if (deploymentMode != null ? !deploymentMode.equals(that.deploymentMode) :that.deploymentMode != null) return false;
        if (runtime != null ? !runtime.equals(that.runtime) :that.runtime != null) return false;
        if (version != null ? !version.equals(that.version) :that.version != null) return false;
        if (exposeService != that.exposeService) return false;
        if (port != null ? !port.equals(that.port) :that.port != null) return false;
        if (storage != null ? !storage.equals(that.storage) :that.storage != null) return false;
        if (envs != null ? !envs.equals(that.envs) :that.envs != null) return false;
        if (buildConfig != null ? !buildConfig.equals(that.buildConfig) :that.buildConfig != null) return false;
        if (capabilities != null ? !capabilities.equals(that.capabilities) :that.capabilities != null) return false;
        return true;
    }

    public int hashCode() {
        return java.util.Objects.hash(deploymentMode,  runtime,  version,  exposeService,  port,  storage,  envs,  buildConfig,  capabilities,  super.hashCode());
    }

    public class StorageNestedImpl extends StorageFluentImpl> implements ComponentSpecFluent.StorageNested,io.dekorate.deps.kubernetes.api.builder.Nested {
        private final StorageBuilder builder;

        StorageNestedImpl(Storage item) {
            this.builder = new StorageBuilder(this, item);
        }

        StorageNestedImpl() {
            this.builder = new StorageBuilder(this);
        }

        public N and() {
             return (N) ComponentSpecFluentImpl.this.withStorage(builder.build());
        }

        public N endStorage() {
             return and();
        }
    }


    public class EnvsNestedImpl extends EnvFluentImpl> implements ComponentSpecFluent.EnvsNested,io.dekorate.deps.kubernetes.api.builder.Nested {
        private final EnvBuilder builder;
        private final int index;

        EnvsNestedImpl(int index,Env item) {
            this.index = index;
            this.builder = new EnvBuilder(this, item);
        }

        EnvsNestedImpl() {
            this.index = -1;
            this.builder = new EnvBuilder(this);
        }

        public N and() {
             return (N) ComponentSpecFluentImpl.this.setToEnvs(index,builder.build());
        }

        public N endEnv() {
             return and();
        }
    }


    public class BuildConfigNestedImpl extends BuildConfigFluentImpl> implements ComponentSpecFluent.BuildConfigNested,io.dekorate.deps.kubernetes.api.builder.Nested {
        private final BuildConfigBuilder builder;

        BuildConfigNestedImpl(BuildConfig item) {
            this.builder = new BuildConfigBuilder(this, item);
        }

        BuildConfigNestedImpl() {
            this.builder = new BuildConfigBuilder(this);
        }

        public N and() {
             return (N) ComponentSpecFluentImpl.this.withBuildConfig(builder.build());
        }

        public N endBuildConfig() {
             return and();
        }
    }


    public class CapabilitiesNestedImpl extends CapabilitiesFluentImpl> implements ComponentSpecFluent.CapabilitiesNested,io.dekorate.deps.kubernetes.api.builder.Nested {
        private final CapabilitiesBuilder builder;

        CapabilitiesNestedImpl(Capabilities item) {
            this.builder = new CapabilitiesBuilder(this, item);
        }

        CapabilitiesNestedImpl() {
            this.builder = new CapabilitiesBuilder(this);
        }

        public N and() {
             return (N) ComponentSpecFluentImpl.this.withCapabilities(builder.build());
        }

        public N endCapabilities() {
             return and();
        }
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy