ApiApplicationInstance.java 3.7 KB
/*
 * Copyright Codecrew Ry
 * 
 * All rights reserved.
 * 
 * This license applies to any software containing a notice placed by the 
 * copyright holder. Such software is herein referred to as the Software. 
 * This license covers modification, distribution and use of the Software. 
 * 
 * Any distribution and use in source and binary forms, with or without 
 * modification is not permitted without explicit written permission from the 
 * copyright owner. 
 * 
 * A non-exclusive royalty-free right is granted to the copyright owner of the 
 * Software to use, modify and distribute all modifications to the Software in 
 * future versions of the Software. 
 * 
 */
package fi.codecrew.moya.model;

import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.UniqueConstraint;

@Entity
@Table(name = "api_application_instances", uniqueConstraints = @UniqueConstraint(columnNames = {
        ApiApplicationInstance.APPLICATION_ID_COLUMN,
        ApiApplicationInstance.AUTHNAME_COLUMN
}))
public class ApiApplicationInstance extends GenericEntity {

    public static final String UNIQUE_KEY_COLUMN = "secret_key";
    public static final String APPLICATION_ID_COLUMN = "application_id";

    private static final long serialVersionUID = 8311790714131060263L;
    public static final String AUTHNAME_COLUMN = "authname";

    @JoinColumn(nullable = false, name = APPLICATION_ID_COLUMN, updatable = false)
    @ManyToOne()
    private ApiApplication application;

    @Column(nullable = false)
    private boolean enabled = true;

    @Column(nullable = false, updatable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date created;

    @Column(nullable = false, updatable = false, name = AUTHNAME_COLUMN)
    private String authname;

    @Lob
    private String name;

    @OneToMany()
    private List<Reader> readers;

    @Lob
    private String notes;

    @JoinColumn(nullable = true)
    @ManyToOne
    private EventUser eventuser;

    @Lob
    @Column(name = UNIQUE_KEY_COLUMN, nullable = false, updatable = false)
    private String secretKey;

    public ApiApplication getApplication() {
        return application;
    }

    public void setApplication(ApiApplication application) {
        this.application = application;
    }

    public boolean isEnabled() {
        return enabled;
    }

    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }

    public Date getCreated() {
        return created;
    }

    public void setCreated(Date created) {
        this.created = created;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Reader> getReaders() {
        return readers;
    }

    public void setReaders(List<Reader> readers) {
        this.readers = readers;
    }

    public String getNotes() {
        return notes;
    }

    public void setNotes(String notes) {
        this.notes = notes;
    }

    public EventUser getEventuser() {
        return eventuser;
    }

    public void setEventuser(EventUser eventuser) {
        this.eventuser = eventuser;
    }

    public String getAuthname() {
        return authname;
    }

    public void setAuthname(String authname) {
        this.authname = authname;
    }

    public String getSecretKey() {
        return secretKey;
    }

    public void setSecretKey(String secretKey) {
        this.secretKey = secretKey;
    }

}