fr.norad.visuwall.core.persistence.entity.SoftwareAccess.java Source code

Java tutorial

Introduction

Here is the source code for fr.norad.visuwall.core.persistence.entity.SoftwareAccess.java

Source

/**
 *
 *     Copyright (C) norad.fr
 *
 *     Licensed under the Apache License, Version 2.0 (the "License");
 *     you may not use this file except in compliance with the License.
 *     You may obtain a copy of the License at
 *
 *             http://www.apache.org/licenses/LICENSE-2.0
 *
 *     Unless required by applicable law or agreed to in writing, software
 *     distributed under the License is distributed on an "AS IS" BASIS,
 *     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *     See the License for the specific language governing permissions and
 *     limitations under the License.
 */
package fr.norad.visuwall.core.persistence.entity;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ScheduledFuture;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import fr.norad.visuwall.api.domain.SoftwareProjectId;
import fr.norad.visuwall.api.plugin.capability.BasicCapability;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.hibernate.annotations.CollectionOfElements;
import org.springframework.util.AutoPopulatingList;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;

@Entity
public class SoftwareAccess {

    @Id
    @GeneratedValue
    private Long id;

    private String url;

    @CollectionOfElements
    private Map<String, String> properties = new HashMap<String, String>();

    private String login;

    private String password;

    private boolean allProject;

    @NotNull
    private Integer projectFinderDelaySecond = 30;
    @NotNull
    private Integer projectStatusDelaySecond = 10;

    @CollectionOfElements
    private List<String> projectNames = new AutoPopulatingList<String>(String.class);
    @CollectionOfElements
    private List<String> viewNames = new AutoPopulatingList<String>(String.class);

    @Transient
    private ScheduledFuture<Object> projectFinderTask;
    @Transient
    private BasicCapability connection;

    public SoftwareAccess() {

    }

    public SoftwareAccess(String url) {
        this.url = url;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        SoftwareAccess other = (SoftwareAccess) obj;
        if (id == null) {
            if (other.id != null) {
                return false;
            }
        } else if (!id.equals(other.id)) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        ToStringHelper toString = Objects.toStringHelper(this) //
                .add("id", id) //
                .add("url", url) //
                .add("allProject", allProject) //
                .add("projectNames", projectNames).add("viewNames", viewNames); //
        return toString.toString();
    }

    public List<SoftwareProjectId> getProjectIds() {
        ArrayList<SoftwareProjectId> softwareProjectIds = new ArrayList<SoftwareProjectId>();
        for (String projectIdSerialized : projectNames) {
            softwareProjectIds.add(new SoftwareProjectId(projectIdSerialized));
        }
        return softwareProjectIds;
    }

    public void setProjectIds(List<SoftwareProjectId> projectIds) {
        ArrayList<String> res = new ArrayList<String>();
        for (SoftwareProjectId softwareProjectId : projectIds) {
            res.add(softwareProjectId.getProjectId());
        }
        projectNames = res;
    }

    // ///////////////////////////////////////////////////////////

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public URL getUrl() {
        try {
            return new URL(url);
        } catch (MalformedURLException e) {
            throw new RuntimeException("software access url is malformed" + this, e);
        }
    }

    public void setUrl(URL url) {
        this.url = url.toString();
    }

    public boolean isAllProject() {
        return allProject;
    }

    public void setAllProject(boolean allProject) {
        this.allProject = allProject;
    }

    public List<String> getViewNames() {
        return viewNames;
    }

    public void setViewNames(List<String> viewNames) {
        this.viewNames = viewNames;
    }

    @JsonIgnore
    public BasicCapability getConnection() {
        return connection;
    }

    @JsonIgnore
    public void setConnection(BasicCapability connection) {
        this.connection = connection;
    }

    public Integer getProjectFinderDelaySecond() {
        return projectFinderDelaySecond;
    }

    public void setProjectFinderDelaySecond(Integer projectFinderDelaySecond) {
        this.projectFinderDelaySecond = projectFinderDelaySecond;
    }

    @JsonIgnore
    public ScheduledFuture<Object> getProjectFinderTask() {
        return projectFinderTask;
    }

    @JsonIgnore
    public void setProjectFinderTask(ScheduledFuture<Object> projectFinderTask) {
        this.projectFinderTask = projectFinderTask;
    }

    public void setProjectStatusDelaySecond(Integer projectStatusDelaySecond) {
        this.projectStatusDelaySecond = projectStatusDelaySecond;
    }

    public Integer getProjectStatusDelaySecond() {
        return projectStatusDelaySecond;
    }

    public void setProperties(Map<String, String> properties) {
        this.properties = properties;
    }

    public Map<String, String> getProperties() {
        return properties;
    }

    public List<String> getProjectNames() {
        return projectNames;
    }

    public void setProjectNames(List<String> projectNames) {
        this.projectNames = projectNames;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getLogin() {
        return login;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPassword() {
        return password;
    }

}