de.fhdo.gui.admin.modules.terminology.domains.DomainValueDetails.java Source code

Java tutorial

Introduction

Here is the source code for de.fhdo.gui.admin.modules.terminology.domains.DomainValueDetails.java

Source

/* 
 * CTS2 based Terminology Server and Terminology Browser
 * Copyright (C) 2014 FH Dortmund: Peter Haas, Robert Muetzner
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package de.fhdo.gui.admin.modules.terminology.domains;

import de.fhdo.terminologie.db.hibernate.Domain;
import de.fhdo.terminologie.db.hibernate.DomainValue;
import de.fhdo.terminologie.db.HibernateUtil;
import de.fhdo.helper.DomainHelper;
import de.fhdo.interfaces.IUpdateModal;
import java.util.List;
import java.util.Map;
import org.hibernate.Session;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.ext.AfterCompose;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;

/**
 *
 * @author Robert Mtzner
 */
public class DomainValueDetails extends Window implements AfterCompose {

    private static org.apache.log4j.Logger logger = de.fhdo.logging.Logger4j.getInstance().getLogger();
    //private static Session hb_session = null;
    //private Session hb_session = HibernateUtil.getSessionFactory().openSession();
    //private static Session hb_session;
    private DomainValue domainValue;
    private Map args;
    //private String domainValueID = "";
    private long domainId = 0, domain_value_id = 0;
    private boolean newEntry = false;
    private IUpdateModal updateListInterface;

    public DomainValueDetails() {
        //hb_session = HibernateSession.getSession();
        //hb_session = HibernateUtil.getSessionFactory().openSession();

        args = Executions.getCurrent().getArg();
        try {
            Object o = args.get("domain_id");
            logger.debug("o: " + o.toString());
            domainId = Long.parseLong(o.toString());

            domain_value_id = Long.parseLong(args.get("domain_value_id").toString());
        } catch (Exception e) {
            //e.printStackTrace();
        }

        try {
            domainValue = (DomainValue) args.get("domain_value");
        } catch (Exception e) {
            logger.debug("Neuer Domain-Value-Eintrag");
        }

        logger.debug("DomainID: " + domainId);

        if (domainValue == null) {
            domainValue = new DomainValue();

            newEntry = true;
        }

        logger.debug("domain_value_id: " + domain_value_id);

    }

    public void afterCompose() {
        // Verbindung von DomainValue herausbekommen
        String s = "";

        if (domainValue != null && domainValue.getDomainValueId() != null && domainValue.getDomainValueId() > 0) {
            List<DomainValue> list = DomainHelper.getInstance()
                    .getUpperDomainValues(domainValue.getDomainValueId());

            if (list != null) {
                for (int i = 0; i < list.size(); ++i) {
                    if (s.length() > 0)
                        s += ";";

                    s += list.get(i).getDomainValueId();

                    logger.debug("ueber-ID: " + list.get(i).getDomainValueId());
                }
            }
        }

        logger.debug("domain_value_id: " + domain_value_id);

        if (domain_value_id > 0) {
            if (s.length() > 0)
                s += ";";
            s += "" + domain_value_id;
        }

        logger.debug("s: " + s);

        Textbox tb = (Textbox) getFellow("ueberID");
        tb.setValue(s);
    }

    public void onOkClicked() {
        // speichern mit Hibernate
        try {
            if (domainValue.getDomainCode() == null || domainValue.getDomainCode().length() == 0) {
                Messagebox.show("Geben Sie bitte einen Code an.");
                return;
            }
            if (domainValue.getDomainDisplay() == null || domainValue.getDomainDisplay().length() == 0) {
                Messagebox.show("Geben Sie bitte einen Anzeige-Text an.");
                return;
            }

            if (logger.isDebugEnabled())
                logger.debug("Daten speichern");

            Session hb_session = HibernateUtil.getSessionFactory().openSession();
            hb_session.getTransaction().begin();

            try {

                if (newEntry) {
                    if (logger.isDebugEnabled())
                        logger.debug("Neuer Eintrag, fuege der Domain hinzu!");

                    Domain domain = (Domain) hb_session.get(Domain.class, domainId);
                    domainValue.setDomain(domain);

                    hb_session.save(domainValue);
                } else {
                    hb_session.merge(domainValue);
                }

            } catch (Exception e) {
                logger.error("Fehler in DomainValueDetails.java in onOkClicked(): " + e.getMessage());
                e.printStackTrace();
            }

            hb_session.getTransaction().commit();
            hb_session.close();

            // Verbindungen speichern
            Textbox tb = (Textbox) getFellow("ueberID");
            String ueberIDs = tb.getValue();

            if (ueberIDs.length() > 0) {
                String[] ids = ueberIDs.split(";");
                for (int i = 0; i < ids.length; ++i) {
                    long id = 0;
                    if (ids[i].length() > 0) {
                        id = Long.parseLong(ids[i]);
                        DomainHelper.getInstance().saveUpperDomainID(domainValue.getDomainValueId(), id);
                    }
                }
            }

            //hb_session.close();

            this.setVisible(false);
            this.detach();

            if (updateListInterface != null)
                updateListInterface.update(domainValue, !newEntry);

        } catch (Exception e) {
            // Fehlermeldung ausgeben
            logger.error("Fehler in DomainValueDetails.java: " + e.getMessage());
            e.printStackTrace();
        }
    }

    public void onCancelClicked() {
        //if (logger.isDebugEnabled())
        //    logger.debug("onCancelClicked()");
        this.setVisible(false);
        this.detach();

    }

    /**
     * @return the domainValue
     */
    public DomainValue getDomainValue() {
        return domainValue;
    }

    /**
     * @param domainValue the domainValue to set
     */
    public void setDomainValue(DomainValue domainValue) {
        this.domainValue = domainValue;
    }

    /**
     * @param updateListInterface the updateListInterface to set
     */
    public void setUpdateListInterface(IUpdateModal updateListInterface) {
        this.updateListInterface = updateListInterface;
    }
}