Skip to content
UCDEditor.java 2.7 KiB
Newer Older
package it.inaf.ia2.tsm.webapp;

import ari.ucidy.UCD;
import ari.ucidy.UCDParser;
import it.inaf.ia2.tsm.webapp.xmlconfig.UCDConfiguration;
import it.inaf.ia2.tsm.webapp.xmlconfig.UserConfiguration;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.deltaspike.core.api.scope.WindowScoped;
 * @author Sonia Zorba {@literal <zorba at oats.inaf.it>}
public class UCDEditor implements Serializable {

    private static final long serialVersionUID = -9117203239681234534L;

    @Inject
    private ConfigurationData config;

    @Inject
    private User user;

    private boolean viewExisting;
    private UCDConfiguration newUCDConfiguration;
    private String invalidUCDMessage;
    private List<UCDConfiguration> customUCDs;

    public void openDialog() {
        viewExisting = true;
        newUCDConfiguration = new UCDConfiguration();
        invalidUCDMessage = null;

        // Retriving UCD list of current user
        for (UserConfiguration u : config.getData().getUsers()) {
            if (u.getUsername().equals(user.getUsername())) {
                customUCDs = u.getCustomUCDs();
                break;
            }
        }
    }

    public boolean isViewExisting() {
        return viewExisting;
    }

    public void setViewExisting(boolean viewExisting) {
        this.viewExisting = viewExisting;
        invalidUCDMessage = null;
    }

    public UCDConfiguration getNewUCDConfiguration() {
        return newUCDConfiguration;
    }

    public List<UCDConfiguration> getCustomUCDs() {
        return customUCDs;
    }

    public void addUCD() throws IOException {
        invalidUCDMessage = null;

        if (newUCDConfiguration.getWord() == null || newUCDConfiguration.getWord().isEmpty()) {
            invalidUCDMessage = "Insert the UCD word";
            return;
        }

        // Check if word syntax is valid
        UCD ucd = UCDParser.parseUCD(newUCDConfiguration.getWord());

        if (ucd.size() != 1 || !ucd.getWord(0).valid) {
            invalidUCDMessage = "Invalid UCD word syntax";
            return;
        }

        customUCDs.add(newUCDConfiguration);
        newUCDConfiguration = new UCDConfiguration();
        config.updateConfigurationFile();
    }

    public void removeUCD(int index) throws IOException {
        customUCDs.remove(index);
        config.updateConfigurationFile();
    }

    /**
     * For some reason getCurrentInstance().addMessage doesn't work inside the
     * dialog, so this field has been added for setting error message manually.
     */
    public String getInvalidUCDMessage() {
        return invalidUCDMessage;
    }
}