/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.api.ssh.server.model.impl;
import org.eclipse.che.api.ssh.server.jpa.SshPairPrimaryKey;
import org.eclipse.che.api.ssh.shared.model.SshPair;
import org.eclipse.che.api.user.server.model.impl.UserImpl;
import org.eclipse.che.commons.annotation.Nullable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import java.util.Objects;
/**
* @author Sergii Leschenko
*/
@Entity(name = "SshKeyPair")
@NamedQueries(
{
@NamedQuery(name = "SshKeyPair.getByOwnerAndService",
query = "SELECT pair " +
"FROM SshKeyPair pair " +
"WHERE pair.owner = :owner " +
" AND pair.service = :service"),
@NamedQuery(name = "SshKeyPair.getByOwner",
query = "SELECT pair " +
"FROM SshKeyPair pair " +
"WHERE pair.owner = :owner")
}
)
@IdClass(SshPairPrimaryKey.class)
@Table(name = "sshkeypair")
public class SshPairImpl implements SshPair {
@Id
@Column(name = "owner")
private String owner;
@Id
@Column(name = "service")
private String service;
@Id
@Column(name = "name")
private String name;
@Column(name = "publickey", columnDefinition = "TEXT")
private String publicKey;
@Column(name = "privatekey", columnDefinition = "TEXT")
private String privateKey;
@ManyToOne
@JoinColumn(name = "owner", insertable = false, updatable = false)
private UserImpl user;
public SshPairImpl() {
}
public SshPairImpl(String owner, String service, String name, String publicKey, String privateKey) {
this.owner = owner;
this.service = service;
this.name = name;
this.publicKey = publicKey;
this.privateKey = privateKey;
}
public SshPairImpl(String owner, SshPair sshPair) {
this.owner = owner;
this.service = sshPair.getService();
this.name = sshPair.getName();
this.publicKey = sshPair.getPublicKey();
this.privateKey = sshPair.getPrivateKey();
}
public SshPairImpl(SshPairImpl sshPair) {
this(sshPair.owner, sshPair.service, sshPair.name, sshPair.publicKey, sshPair.privateKey);
}
public String getOwner() {
return owner;
}
@Override
public String getService() {
return service;
}
@Override
public String getName() {
return name;
}
@Override
@Nullable
public String getPublicKey() {
return publicKey;
}
@Override
@Nullable
public String getPrivateKey() {
return privateKey;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (!(obj instanceof SshPairImpl)) return false;
final SshPairImpl other = (SshPairImpl)obj;
return Objects.equals(owner, other.owner) &&
Objects.equals(service, other.service) &&
Objects.equals(name, other.name) &&
Objects.equals(publicKey, other.publicKey) &&
Objects.equals(privateKey, other.privateKey);
}
@Override
public int hashCode() {
int hash = 7;
hash = 31 * hash + Objects.hashCode(owner);
hash = 31 * hash + Objects.hashCode(service);
hash = 31 * hash + Objects.hashCode(name);
hash = 31 * hash + Objects.hashCode(publicKey);
hash = 31 * hash + Objects.hashCode(privateKey);
return hash;
}
@Override
public String toString() {
return "SshPairImpl{" +
"owner='" + owner + '\'' +
", service='" + service + '\'' +
", name='" + name + '\'' +
", publicKey='" + publicKey + '\'' +
", privateKey='" + privateKey + '\'' +
'}';
}
}