Newer
Older
/*
* _____________________________________________________________________________
*
* INAF - OATS National Institute for Astrophysics - Astronomical Observatory of
* Trieste INAF - IA2 Italian Center for Astronomical Archives
* _____________________________________________________________________________
*
* Copyright (C) 2016 Istituto Nazionale di Astrofisica
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License Version 3 as published by the
* Free Software Foundation.
*
* This program 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
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
Sonia Zorba
committed
package it.inaf.ia2.tsm.webapp;
import it.inaf.ia2.tsm.webapp.xmlconfig.SeparatedCredentials;
import it.inaf.ia2.tsm.datalayer.Credentials;
import it.inaf.ia2.tsm.model.TapSchemaModels;
import it.inaf.ia2.tsm.webapp.xmlconfig.JoinedCredentials;
import it.inaf.ia2.tsm.webapp.xmlconfig.TapCredentials;
import java.io.Serializable;
import java.sql.SQLException;
import javax.annotation.PostConstruct;
Sonia Zorba
committed
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
Sonia Zorba
committed
import org.apache.deltaspike.core.api.scope.WindowScoped;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
* @author Sonia Zorba {@literal <zorba at oats.inaf.it>}
*/
@Named("credentialsInsertion")
Sonia Zorba
committed
@WindowScoped
Sonia Zorba
committed
public class CredentialsEditing implements Serializable {
Sonia Zorba
committed
private static final long serialVersionUID = -2688980249773483198L;
Sonia Zorba
committed
private static final Logger LOG = LoggerFactory.getLogger(CredentialsEditing.class);
Sonia Zorba
committed
private User user;
@Inject
private ConfigurationManager config;
private TapSchemaLoader tapSchemaLoader;
private Integer credentialsInEditing;
private Integer credentialsToRemove;
Sonia Zorba
committed
private boolean credentialsDialogOpened;
private List<String> tapSchemaVersions;
private boolean separateCredentials;
private Credentials sourceCredentials;
private Credentials tapSchemaCredentials;
private String tapSchemaName;
private String tapSchemaVersion;
private boolean hasObscore;
@PostConstruct
public void init() {
this.tapSchemaVersions = TapSchemaModels.getAvailableVersions();
public List<TapCredentials> getSavedCredentials() {
Sonia Zorba
committed
return user.getUserConfiguration().getCredentialsInfo();
public void editCredentials(int index) {
credentialsInEditing = index;
TapCredentials credentials = getSavedCredentials().get(index);
if (credentials instanceof JoinedCredentials) {
JoinedCredentials joinedCredentials = (JoinedCredentials) credentials;
separateCredentials = false;
sourceCredentials = new Credentials(joinedCredentials.getCredentials());
// in case the user wants to split credentials
tapSchemaCredentials = new Credentials();
} else if (credentials instanceof SeparatedCredentials) {
SeparatedCredentials separatedCredentials = (SeparatedCredentials) credentials;
separateCredentials = true;
sourceCredentials = new Credentials(separatedCredentials.getSourceCredentials());
tapSchemaCredentials = new Credentials(separatedCredentials.getTapSchemaCredentials());
}
tapSchemaName = credentials.getTapSchemaName();
tapSchemaVersion = credentials.getTapSchemaVersion();
hasObscore = credentials.isHasObscore();
public void addNewCredentialsInEditing() {
credentialsInEditing = null;
sourceCredentials = new Credentials();
tapSchemaCredentials = new Credentials();
tapSchemaName = "";
tapSchemaVersion = "";
hasObscore = false;
public void loadTapSchema(TapCredentials tapCredentials) throws SQLException {
tapSchemaLoader.tryLoadingTapSchema(tapCredentials);
public void openDeleteCredentialsConfirmation(int index) throws IOException {
credentialsToRemove = index;
public void confirmCredentialsDeletion() {
if (credentialsToRemove != null) {
config.deleteCredentials(user.getUsername(), credentialsToRemove);
public boolean validateNotNull(FacesContext ctx, String value, String componentId, String errorMessage) {
if (value == null || value.isEmpty()) {
ctx.addMessage(componentId, new FacesMessage(errorMessage));
return false;
}
return true;
}
public void saveCredentialsEdited() throws IOException {
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
/**
* We need to validate manually to avoid problem with JSF AJAX partial
* updates.
*/
FacesContext ctx = FacesContext.getCurrentInstance();
/**
* Single & operator used to perform all validation.
*/
boolean validationOk
= validateNotNull(ctx, sourceCredentials.getHostname(), "main:source_hostname", "Hostname is required")
& validateNotNull(ctx, sourceCredentials.getUsername(), "main:source_username", "Username is required")
& validateNotNull(ctx, tapSchemaName, "main:tap_schema_name", "TAP_SCHEMA name is required");
if (separateCredentials) {
validationOk = validationOk
& validateNotNull(ctx, tapSchemaCredentials.getHostname(), "main:tap_schema_hostname", "Hostname is required")
& validateNotNull(ctx, tapSchemaCredentials.getHostname(), "main:tap_schema_username", "Username is required");
}
if (!validationOk) {
return;
}
TapCredentials editedCredentials;
if (separateCredentials) {
editedCredentials = new SeparatedCredentials(sourceCredentials, tapSchemaCredentials);
} else {
editedCredentials = new JoinedCredentials(sourceCredentials);
}
editedCredentials.setHasObscore(hasObscore);
editedCredentials.setTapSchemaName(tapSchemaName);
editedCredentials.setTapSchemaVersion(tapSchemaVersion);
if (credentialsInEditing == null) {
// New credentials
config.addCredentials(user.getUsername(), editedCredentials);
} else {
// Existing credentials
config.updateCredentials(user.getUsername(), editedCredentials, credentialsInEditing);
}
}
public List<String> getTapSchemaVersions() {
return tapSchemaVersions;
}
public void setTapSchemaVersions(List<String> tapSchemaVersions) {
this.tapSchemaVersions = tapSchemaVersions;
}
public boolean isSeparateCredentials() {
return separateCredentials;
public void setSeparateCredentials(boolean separateCredentials) {
this.separateCredentials = separateCredentials;
public boolean isCredentialsDialogOpened() {
return credentialsDialogOpened;
}
public void setCredentialsDialogOpened(boolean credentialsDialogOpened) {
this.credentialsDialogOpened = credentialsDialogOpened;
}
public Credentials getSourceCredentials() {
return sourceCredentials;
public void setSourceCredentials(Credentials sourceCredentials) {
this.sourceCredentials = sourceCredentials;
public Credentials getTapSchemaCredentials() {
return tapSchemaCredentials;
public void setTapSchemaCredentials(Credentials tapSchemaCredentials) {
this.tapSchemaCredentials = tapSchemaCredentials;
public String getTapSchemaName() {
return tapSchemaName;
public void setTapSchemaName(String tapSchemaName) {
this.tapSchemaName = tapSchemaName;
}
public String getTapSchemaVersion() {
return tapSchemaVersion;
}
public void setTapSchemaVersion(String tapSchemaVersion) {
this.tapSchemaVersion = tapSchemaVersion;
}
public boolean isHasObscore() {
return hasObscore;
}
public void setHasObscore(boolean hasObscore) {
this.hasObscore = hasObscore;