/******************************************************************************* * This file is part of OpenNMS(R). * * Copyright (C) 2009-2011 The OpenNMS Group, Inc. * OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * * OpenNMS(R) is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation, either version 3 of the License, * or (at your option) any later version. * * OpenNMS(R) 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with OpenNMS(R). If not, see: * http://www.gnu.org/licenses/ * * For more information contact: * OpenNMS(R) Licensing <license@opennms.org> * http://www.opennms.org/ * http://www.opennms.com/ *******************************************************************************/ package org.opennms.netmgt.model; import java.io.Serializable; import java.util.Date; import java.util.LinkedHashSet; import java.util.Set; import javax.persistence.Entity; import javax.persistence.Table; import javax.persistence.Id; import javax.persistence.Column; import javax.persistence.SequenceGenerator; import javax.persistence.GeneratedValue; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; import javax.persistence.OneToMany; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.XmlID; /** * <p>OnmsMap class.</p> */ @XmlRootElement(name = "map") @Entity @Table(name = "map") public class OnmsMap implements Serializable { private static final long serialVersionUID = 3885485728813867167L; /** Constant <code>USER_GENERATED_MAP="U"</code> */ public static final String USER_GENERATED_MAP = "U"; /** Constant <code>AUTOMATICALLY_GENERATED_MAP="A"</code> */ public static final String AUTOMATICALLY_GENERATED_MAP = "A"; /** Constant <code>AUTOMATIC_SAVED_MAP="S"</code> */ public static final String AUTOMATIC_SAVED_MAP = "S"; /** Constant <code>DELETED_MAP="D"</code> */ public static final String DELETED_MAP = "D"; //for future use /** Constant <code>ACCESS_MODE_ADMIN="RW"</code> */ public static final String ACCESS_MODE_ADMIN = "RW"; /** Constant <code>ACCESS_MODE_USER="RO"</code> */ public static final String ACCESS_MODE_USER = "RO"; /** Constant <code>ACCESS_MODE_GROUP="RWRO"</code> */ public static final String ACCESS_MODE_GROUP = "RWRO"; private int id; private String name; private String mapGroup; private String background; private String owner; private String accessMode; private String userLastModifies; private Date createTime; private Date lastModifiedTime; private float scale; private int offsetX; private int offsetY; private String type; private int width; private int height; private Set<OnmsMapElement> mapElements = new LinkedHashSet<OnmsMapElement>(); /** * <p>Constructor for OnmsMap.</p> */ public OnmsMap() { this.createTime = new Date(); this.lastModifiedTime = new Date(); } /** * <p>Constructor for OnmsMap.</p> * * @param name a {@link java.lang.String} object. * @param owner a {@link java.lang.String} object. */ public OnmsMap(String name, String owner) { this.name = name; this.owner = owner; this.userLastModifies = owner; this.createTime = new Date(); this.lastModifiedTime = new Date(); this.accessMode = ACCESS_MODE_USER; this.type=OnmsMap.USER_GENERATED_MAP; this.width = 800; this.height = 600; } /** * <p>Constructor for OnmsMap.</p> * * @param name a {@link java.lang.String} object. * @param owner a {@link java.lang.String} object. * @param width a int. * @param height a int. */ public OnmsMap(String name, String owner, int width, int height) { this.name = name; this.owner = owner; this.userLastModifies = owner; this.createTime = new Date(); this.lastModifiedTime = new Date(); this.accessMode = ACCESS_MODE_USER; this.type=OnmsMap.USER_GENERATED_MAP; this.width = width; this.height = height; } /** * <p>Constructor for OnmsMap.</p> * * @param name a {@link java.lang.String} object. * @param owner a {@link java.lang.String} object. * @param accessMode a {@link java.lang.String} object. * @param width a int. * @param height a int. */ public OnmsMap(String name, String owner, String accessMode, int width, int height) { this.name = name; this.owner = owner; this.userLastModifies = owner; this.createTime = new Date(); this.lastModifiedTime = new Date(); setAccessMode(accessMode); this.type=OnmsMap.USER_GENERATED_MAP; this.width = width; this.height = height; } /** * <p>Constructor for OnmsMap.</p> * * @param name a {@link java.lang.String} object. * @param mapGroup a {@link java.lang.String} object. * @param background a {@link java.lang.String} object. * @param owner a {@link java.lang.String} object. * @param accessMode a {@link java.lang.String} object. * @param type a {@link java.lang.String} object. * @param width a int. * @param height a int. */ public OnmsMap(String name, String mapGroup, String background, String owner, String accessMode, String type, int width, int height) { this.name = name; this.mapGroup = mapGroup; this.background = background; this.owner = owner; this.userLastModifies = owner; this.createTime = new Date(); this.lastModifiedTime = new Date(); setAccessMode(accessMode); setType(type); this.width = width; this.height = height; } /** * <p>Getter for the field <code>id</code>.</p> * * @return a int. */ @XmlTransient @Id @Column(name="mapId", nullable=false) @SequenceGenerator(name = "opennmsSequence", sequenceName = "opennmsNxtId") @GeneratedValue(generator = "opennmsSequence") public int getId() { return id; } /** * <p>getMapId</p> * * @return a {@link java.lang.String} object. */ @XmlID @Transient public String getMapId() { return Integer.toString(getId()); } /** * <p>Setter for the field <code>id</code>.</p> * * @param id a int. */ public void setId(int id) { this.id = id; } /** * <p>Getter for the field <code>name</code>.</p> * * @return a {@link java.lang.String} object. */ @Column(name = "mapName") public String getName() { return name; } /** * <p>Setter for the field <code>name</code>.</p> * * @param name a {@link java.lang.String} object. */ public void setName(String name) { this.name = name; } /** * <p>Getter for the field <code>mapGroup</code>.</p> * * @return a {@link java.lang.String} object. */ @Column(name = "mapGroup") public String getMapGroup() { return mapGroup; } /** * <p>Setter for the field <code>mapGroup</code>.</p> * * @param mapGroup a {@link java.lang.String} object. */ public void setMapGroup(String mapGroup) { this.mapGroup = mapGroup; } /** * <p>Getter for the field <code>background</code>.</p> * * @return a {@link java.lang.String} object. */ @Column(name = "mapBackGround") public String getBackground() { return background; } /** * <p>Setter for the field <code>background</code>.</p> * * @param background a {@link java.lang.String} object. */ public void setBackground(String background) { this.background = background; } /** * <p>Getter for the field <code>owner</code>.</p> * * @return a {@link java.lang.String} object. */ @Column(name = "mapOwner") public String getOwner() { return owner; } /** * <p>Setter for the field <code>owner</code>.</p> * * @param owner a {@link java.lang.String} object. */ public void setOwner(String owner) { this.owner = owner; } /** * <p>Getter for the field <code>accessMode</code>.</p> * * @return a {@link java.lang.String} object. */ @Column(name = "mapAccess") public String getAccessMode() { return accessMode; } /** * <p>Setter for the field <code>accessMode</code>.</p> * * @param accessMode a {@link java.lang.String} object. */ public void setAccessMode(String accessMode) { if(accessMode.trim().equalsIgnoreCase(ACCESS_MODE_GROUP)) this.accessMode = ACCESS_MODE_GROUP; else this.accessMode = ACCESS_MODE_ADMIN; } /** * <p>Getter for the field <code>userLastModifies</code>.</p> * * @return a {@link java.lang.String} object. */ @Column(name = "userLastModifies") public String getUserLastModifies() { return userLastModifies; } /** * <p>Setter for the field <code>userLastModifies</code>.</p> * * @param userLastModifies a {@link java.lang.String} object. */ public void setUserLastModifies(String userLastModifies) { this.userLastModifies = userLastModifies; } /** * <p>Getter for the field <code>createTime</code>.</p> * * @return a {@link java.util.Date} object. */ @Temporal(TemporalType.TIMESTAMP) @Column(name = "mapCreateTime") public Date getCreateTime() { return createTime; } /** * <p>Setter for the field <code>createTime</code>.</p> * * @param createTime a {@link java.util.Date} object. */ public void setCreateTime(Date createTime) { this.createTime = createTime; } /** * <p>Getter for the field <code>lastModifiedTime</code>.</p> * * @return a {@link java.util.Date} object. */ @Temporal(TemporalType.TIMESTAMP) @Column(name = "lastModifiedTime") public Date getLastModifiedTime() { return lastModifiedTime; } /** * <p>Setter for the field <code>lastModifiedTime</code>.</p> * * @param lastModifiedTime a {@link java.util.Date} object. */ public void setLastModifiedTime(Date lastModifiedTime) { this.lastModifiedTime = lastModifiedTime; } /** * <p>Getter for the field <code>scale</code>.</p> * * @return a float. */ @Column(name = "mapScale") public float getScale() { return scale; } /** * <p>Setter for the field <code>scale</code>.</p> * * @param scale a float. */ public void setScale(float scale) { this.scale = scale; } /** * <p>Getter for the field <code>offsetX</code>.</p> * * @return a int. */ @Column(name = "mapXOffset") public int getOffsetX() { return offsetX; } /** * <p>Setter for the field <code>offsetX</code>.</p> * * @param offsetX a int. */ public void setOffsetX(int offsetX) { this.offsetX = offsetX; } /** * <p>Getter for the field <code>offsetY</code>.</p> * * @return a int. */ @Column(name = "mapYOffset") public int getOffsetY() { return offsetY; } /** * <p>Setter for the field <code>offsetY</code>.</p> * * @param offsetY a int. */ public void setOffsetY(int offsetY) { this.offsetY = offsetY; } /** * <p>Getter for the field <code>type</code>.</p> * * @return a {@link java.lang.String} object. */ @Column(name = "mapType") public String getType() { return type; } /** * <p>Setter for the field <code>type</code>.</p> * * @param type a {@link java.lang.String} object. */ public void setType(String type) { if (type.equalsIgnoreCase(OnmsMap.AUTOMATICALLY_GENERATED_MAP)) this.type = OnmsMap.AUTOMATICALLY_GENERATED_MAP; else if (type.equalsIgnoreCase(OnmsMap.AUTOMATIC_SAVED_MAP)) this.type = OnmsMap.AUTOMATIC_SAVED_MAP; else this.type = OnmsMap.USER_GENERATED_MAP; } /** * <p>Getter for the field <code>width</code>.</p> * * @return a int. */ @Column(name = "mapWidth") public int getWidth() { return width; } /** * <p>Setter for the field <code>width</code>.</p> * * @param width a int. */ public void setWidth(int width) { this.width = width; } /** * <p>Getter for the field <code>height</code>.</p> * * @return a int. */ @Column(name = "mapHeight") public int getHeight() { return height; } /** * <p>Setter for the field <code>height</code>.</p> * * @param height a int. */ public void setHeight(int height) { this.height = height; } /** * <p>Getter for the field <code>mapElements</code>.</p> * * @return a {@link java.util.Set} object. */ @XmlTransient @OneToMany(mappedBy="map") @org.hibernate.annotations.Cascade( { org.hibernate.annotations.CascadeType.ALL, org.hibernate.annotations.CascadeType.DELETE_ORPHAN }) public Set<OnmsMapElement> getMapElements() { return this.mapElements; } /** * <p>Setter for the field <code>mapElements</code>.</p> * * @param mapElements a {@link java.util.Set} object. */ public void setMapElements(Set<OnmsMapElement> mapElements) { this.mapElements = mapElements; } /** * <p>addMapElement</p> * * @param element a {@link org.opennms.netmgt.model.OnmsMapElement} object. */ public void addMapElement(OnmsMapElement element) { element.setMap(this); getMapElements().add(element); } }