de.fraunhofer.sciencedataamanager.beans.SearchDefinitionEdit.java Source code

Java tutorial

Introduction

Here is the source code for de.fraunhofer.sciencedataamanager.beans.SearchDefinitionEdit.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package de.fraunhofer.sciencedataamanager.beans;

import de.fraunhofer.sciencedataamanager.domain.ApplicationConfiguration;
import de.fraunhofer.sciencedataamanager.domain.SearchDefinition;
import de.fraunhofer.sciencedataamanager.domain.SearchExecution;
import de.fraunhofer.sciencedataamanager.domain.SearchTerm;
import de.fraunhofer.sciencedataamanager.domain.SystemInstance;
import de.fraunhofer.sciencedataamanager.datamanager.ApplicationConfigurationDataManagerFactory;
import de.fraunhofer.sciencedataamanager.datamanager.SearchDefinitionDataManager;
import de.fraunhofer.sciencedataamanager.datamanager.SearchExecutionDataManager;
import de.fraunhofer.sciencedataamanager.datamanager.SearchTermDataManager;
import de.fraunhofer.sciencedataamanager.datamanager.SystemInstanceDataManager;
import java.util.Collection;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ComponentSystemEvent;
import org.apache.commons.lang3.StringEscapeUtils;

/**
 * Provides logic and data for the search definition edit page.
 *
 * @author Moritz Mars
 */
@ManagedBean(name = "searchDefinitionEdit")
@SessionScoped
public class SearchDefinitionEdit {

    private int searchDefinitionID;
    private String searchDefinitionName;
    private String searchDefinitionItemTreshhold;

    private String searchDefinitionExpertQuery;
    private String searchDefinitionQueryMode;
    private LinkedList<SystemInstance> selectedSystemInstanceList;
    private LinkedList<SystemInstance> systemInstanceList;
    private ApplicationConfiguration applicationConfiguration = ApplicationConfigurationDataManagerFactory
            .getApplicationConfigurationDataProvider(null).getApplicationConfiguration();

    /**
     * Returns the selected system instance list.
     *
     * @return the selected system instance list.
     */
    public LinkedList<SystemInstance> getSelectedSystemInstanceList() {
        return selectedSystemInstanceList;
    }

    /**
     * Sets the selected system instance list.
     *
     * @param selectedSystemInstanceList the selected system instance list.
     */
    public void setSelectedSystemInstanceList(LinkedList<SystemInstance> selectedSystemInstanceList) {
        this.selectedSystemInstanceList = selectedSystemInstanceList;
    }

    /**
     * Returns the system instance list.
     *
     * @return the system instance list.
     */
    public LinkedList<SystemInstance> getSystemInstanceList() {
        return systemInstanceList;
    }

    /**
     * Sets the system instance list.
     *
     * @param systemInstanceList the system instance list.
     */
    public void setSystemInstanceList(LinkedList<SystemInstance> systemInstanceList) {
        this.systemInstanceList = systemInstanceList;
    }

    /**
     * Sets the current term.
     *
     * @param currentTerm the current term.
     */
    public void setCurrentTerm(String currentTerm) {
        this.currentTerm = currentTerm;
    }

    /**
     * Sets the current operation.
     *
     * @param currentOperation the current operation
     */
    public void setCurrentOperation(String currentOperation) {
        this.currentOperation = currentOperation;
    }

    private String currentTerm;

    /**
     * Returns the current term.
     *
     * @return the current term.
     */
    public String getCurrentTerm() {
        return currentTerm;
    }

    /**
     * Returns the current operation.
     *
     * @return the current operation.
     */
    public String getCurrentOperation() {
        return currentOperation;
    }

    private String currentOperation;

    /**
     * Sets the search definition name.
     *
     * @param searchDefinitionName the search definition name.
     */
    public void setSearchDefinitionName(String searchDefinitionName) {
        this.searchDefinitionName = searchDefinitionName;
    }

    /**
     * Returns the search definition name.
     *
     * @return the search definition name.
     */
    public String getSearchDefinitionName() {
        return searchDefinitionName;
    }

    /**
     * The method is executed after page load.
     *
     * @param event the information of the page load.
     */
    public void onLoad(ComponentSystemEvent event) {

        try {
            if (FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()
                    .get("SelectedSearchDefinition") == null) {
                return;
            }
            searchDefinitionID = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext()
                    .getRequestParameterMap().get("SelectedSearchDefinition"));
            this.setSelectedSystemInstanceList(new LinkedList());
            this.setSystemInstanceList(new LinkedList());
            SearchDefinitionDataManager searchDefinitionDataProvider = new SearchDefinitionDataManager(
                    applicationConfiguration);
            SearchDefinition searchDefinition = searchDefinitionDataProvider
                    .getSearchDefinitionByID(searchDefinitionID);
            this.setSearchDefinitionName(searchDefinition.getName());

            this.setSearchDefinitionItemTreshhold(searchDefinition.getItemTreshhold() + "");
            this.setSearchDefinitionExpertQuery(StringEscapeUtils.unescapeJava(searchDefinition.getExpertQuery()));
            this.setSearchDefinitionQueryMode(searchDefinition.getSearchQueryMode());

            this.getSystemInstanceList().addAll(this.getSystemInstances());
            this.getSelectedSystemInstanceList()
                    .addAll(getSearchExecutionBySearchDefinition().getSystemInstances());
        } catch (Exception ex) {
            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
            this.applicationConfiguration.getLoggingManager().logException(ex);

        }
    }

    /**
     * The methods updates the search definition.
     */
    public void updateSearchDefinition() {
        try {

            SearchDefinition searchDefinition = new SearchDefinition();
            searchDefinition.setID(searchDefinitionID);
            searchDefinition.setName(this.getSearchDefinitionName());

            searchDefinition.setExpertQuery(StringEscapeUtils.escapeJava(this.searchDefinitionExpertQuery));
            if (this.searchDefinitionItemTreshhold.matches("\\d+")) {
                searchDefinition.setItemTreshhold(Integer.parseInt(this.searchDefinitionItemTreshhold));
            } else {
                searchDefinition.setItemTreshhold(500);
            }

            searchDefinition.setSearchQueryMode(this.searchDefinitionQueryMode);

            SearchDefinitionDataManager searchDefinitionDataProvider = new SearchDefinitionDataManager(
                    applicationConfiguration);
            searchDefinitionDataProvider.updateSearchDefinition(searchDefinition);

            SearchExecution searchExecution = new SearchExecution();
            searchExecution.setSearchDefiniton(searchDefinition);
            searchExecution.setSystemInstances(this.getSelectedSystemInstanceList());
            SearchExecutionDataManager searchExecutionDataProvider = new SearchExecutionDataManager(
                    applicationConfiguration);
            searchExecutionDataProvider.deleteSystemInstancesBySearchExecution(searchExecution);
            searchExecutionDataProvider.saveSearchExecution(searchExecution);

            FacesContext.getCurrentInstance().getExternalContext().redirect("index.xhtml");
        } catch (Exception ex) {
            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);

            this.applicationConfiguration.getLoggingManager().logException(ex);
        }

    }

    /**
     * Returns the search execution.
     *
     * @return the search execution.
     */
    public SearchExecution getSearchExecutionBySearchDefinition() {

        SearchExecution searchExecution = null;
        SearchDefinition searchDefinition = new SearchDefinition();
        searchDefinition.setID(searchDefinitionID);
        try {
            SearchExecutionDataManager searchExecutionDataProvider = new SearchExecutionDataManager(
                    applicationConfiguration);
            searchExecution = searchExecutionDataProvider.getSystemInstanceBySearchDefinition(searchDefinition);

        } catch (Exception ex) {
            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
            this.applicationConfiguration.getLoggingManager().logException(ex);

        }
        return searchExecution;
    }

    /**
     * Returns the search terms.
     *
     * @return the search terms.
     */
    public Collection getSearchTermsBySearchExecutionDefinition() {
        Collection searchTerms = null;

        try {
            SearchDefinitionDataManager searchDefinitionDataProvider = new SearchDefinitionDataManager(
                    applicationConfiguration);
            searchTerms = searchDefinitionDataProvider.getSearchDefinitionByID(searchDefinitionID).getSearchTerms();
        } catch (Exception ex) {
            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
            this.applicationConfiguration.getLoggingManager().logException(ex);

        }
        return searchTerms;
    }

    /**
     * The method adds a new search term.
     */
    public void addSearchTerm() {
        try {

            SearchDefinition searchDefinition = new SearchDefinition();
            searchDefinition.setID(searchDefinitionID);

            SearchTerm searchTerm = new SearchTerm();
            searchTerm.setOperation(currentOperation);
            searchTerm.setTerm(currentTerm);

            searchDefinition.getSearchTerms().add(searchTerm);

            SearchTermDataManager searchTermDataProvider = new SearchTermDataManager(applicationConfiguration);
            searchTermDataProvider.insertSearchTerms(searchDefinition);

            FacesContext.getCurrentInstance().getExternalContext()
                    .redirect("SearchDefinitionEdit.xhtml?SelectedSearchDefinition=" + searchDefinitionID);
        } catch (Exception ex) {
            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
            this.applicationConfiguration.getLoggingManager().logException(ex);

        }

    }

    /**
     * The method deletes a search term.
     *
     * @param the search term to delete.
     */
    public void deleteSearchTerm(SearchTerm searchTerm) {
        try {
            SearchTermDataManager searchTermDataProvider = new SearchTermDataManager(applicationConfiguration);
            searchTermDataProvider.deleteSearchTerm(searchTerm);
        } catch (Exception ex) {
            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
            this.applicationConfiguration.getLoggingManager().logException(ex);

        }
    }

    /**
     * Returns the system instances.
     *
     * @return the system instances.
     */
    public Collection<SystemInstance> getSystemInstances() {
        Collection systemInstances = null;
        try {
            SystemInstanceDataManager systemInstanceDataProvider = new SystemInstanceDataManager(
                    applicationConfiguration);
            systemInstances = systemInstanceDataProvider.getSystemInstances();
        } catch (Exception ex) {
            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
            this.applicationConfiguration.getLoggingManager().logException(ex);

        }
        return systemInstances;
    }

    /**
     * Executes a redirect to the index page.
     */
    public void redirectBack() {
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("index.xhtml");
        } catch (Exception ex) {
            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
            this.applicationConfiguration.getLoggingManager().logException(ex);

        }

    }

    public String getSearchDefinitionItemTreshhold() {
        return searchDefinitionItemTreshhold;
    }

    public void setSearchDefinitionItemTreshhold(String searchDefinitionItemTreshhold) {
        this.searchDefinitionItemTreshhold = searchDefinitionItemTreshhold;
    }

    public String getSearchDefinitionExpertQuery() {
        return searchDefinitionExpertQuery;
    }

    public void setSearchDefinitionExpertQuery(String searchDefinitionExpertQuery) {
        this.searchDefinitionExpertQuery = searchDefinitionExpertQuery;
    }

    public String getSearchDefinitionQueryMode() {
        return searchDefinitionQueryMode;
    }

    public void setSearchDefinitionQueryMode(String searchDefinitionQueryMode) {
        this.searchDefinitionQueryMode = searchDefinitionQueryMode;
    }

}