Example usage for java.rmi RemoteException getCause

List of usage examples for java.rmi RemoteException getCause

Introduction

In this page you can find the example usage for java.rmi RemoteException getCause.

Prototype

public Throwable getCause() 

Source Link

Document

Returns the cause of this exception.

Usage

From source file:com.appeligo.amazon.AmazonService.java

public AmazonItem getProgramPurchases(Program program) throws ServiceException {
    throttle();//from   w w w  .j av  a 2 s .co m

    try {
        AWSECommerceServicePortType service = getService();
        Configuration config = ConfigUtils.getSystemConfig();

        ItemSearch search = new ItemSearch();
        search.setAWSAccessKeyId(config.getString("amazon.awsId"));
        search.setAssociateTag(config.getString("amazon.associateTag"));

        ItemSearchRequest[] requests = new ItemSearchRequest[2];
        ItemSearchRequest request = new ItemSearchRequest();
        request.setSearchIndex("Merchants");
        String keywords = "unbox " + program.getProgramTitle() + " -xxx";
        if (log.isInfoEnabled()) {
            log.info("Searching for programs: " + keywords);
        }
        request.setKeywords(keywords);
        request.setResponseGroup(new String[] { "Small", "Images" });
        requests[0] = request;

        request = new ItemSearchRequest();
        request.setSearchIndex("Video");
        keywords = program.getProgramTitle() + " -xxx";
        if (log.isInfoEnabled()) {
            log.info("Searching for programs: " + keywords);
        }
        request.setKeywords(keywords);
        request.setResponseGroup(new String[] { "Small", "Images" });
        requests[1] = request;

        search.setRequest(requests);
        ItemSearchResponse response = service.itemSearch(search);
        lastServiceCall = System.currentTimeMillis();

        checkError(response);

        Items[] responseList = response.getItems();

        return chooseItem(program, responseList);

    } catch (RemoteException e) {
        throw new ServiceException("Cannot lookup videos.", e.getCause());
    }
}

From source file:com.appeligo.amazon.AmazonService.java

public List<AmazonItem> getKeywordPurchases(String keywords, int maxResults) throws ServiceException {
    //throttle();

    try {/*  ww  w.j av  a 2 s  .  c  o  m*/
        AWSECommerceServicePortType service = getService();
        Configuration config = ConfigUtils.getAmazonConfig();

        ItemSearch search = new ItemSearch();
        search.setAWSAccessKeyId(config.getString("awsId"));
        search.setAssociateTag(config.getString("associateTag"));

        ItemSearchRequest[] requests = new ItemSearchRequest[1];
        ItemSearchRequest request = new ItemSearchRequest();
        request.setSearchIndex("All");
        if (log.isInfoEnabled()) {
            log.info("Searching for keywords: " + keywords);
        }
        request.setKeywords(keywords + " -xxx");
        request.setResponseGroup(new String[] { "Small", "Images" });
        requests[0] = request;

        search.setRequest(requests);
        ItemSearchResponse response = service.itemSearch(search);
        lastServiceCall = System.currentTimeMillis();

        checkError(response);

        Items[] responseList = response.getItems();
        Items items = responseList[0];

        ///////////////////////////////////////////////////////////////////////////////////
        // PENDING JMF: I was getting an ocasional NullPointerException here, particularly
        // when I got no search results from my action, seems reasonable.  I added this
        // defensive check and return an empty list.  We may very well want to can some
        // items to pack into a default list in this case.
        ///////////////////////////////////////////////////////////////////////////////////
        if (items != null && items.getItem() != null) {
            List<AmazonItem> productList = new ArrayList<AmazonItem>(items.getItem().length);
            for (int i = 0; i < maxResults && i < items.getItem().length; i++) {
                Item item = items.getItem()[i];
                //if (isAllowed(item)) {
                productList.add(createItem(item));
                //}
            }
            return productList;
        } else {
            return new ArrayList<AmazonItem>();
        }

    } catch (RemoteException e) {
        throw new ServiceException("Cannot lookup videos.", e.getCause());
    }
}

From source file:com.collabnet.ccf.pi.sfee.v44.TimeoutWrapper.java

/**
 * This method determines whether the exception is timeout related and will
 * be handled in this method or whether it should be handled by another
 * layer//w  w  w  .j a va  2 s .  c o m
 * 
 * @param e
 *            exception that was intercepted
 * @param numberOfTries
 *            number this method was already called for the same method
 *            call, this will help to determine the timeout
 * @param connectionManager
 *            this object is used to retrieve timeout related configuration
 *            parameters
 * @return true if exception was handled here and method call should be
 *         retried, false if exception should be passed to next layer
 * @throws RemoteException
 */
protected boolean handleException(RemoteException e, int numberOfTries,
        ConnectionManager<Connection> connectionManager) throws RemoteException {
    if (!connectionManager.isEnableRetryAfterNetworkTimeout())
        throw e;
    int msToSleep = (numberOfTries - 1) * connectionManager.getRetryIncrementTime();
    int maxMsToSleep = connectionManager.getMaximumRetryWaitingTime();

    Throwable cause = e.getCause();
    if (cause instanceof java.net.SocketException || cause instanceof java.net.UnknownHostException) {
        if (numberOfTries == 1) {
            // first try, long error message
            log.warn("Network related problem occurred while calling TF/CSFE webservice. Try operation again",
                    e);
        } else if (msToSleep < maxMsToSleep) {
            // error occurred again, short error message, go to sleep
            // we switched to a linear increase of the timeout value, may
            // have to revisit this decision later
            // int timeOut = (int) Math.pow(2, numberOfTries);
            log.warn("Network related error occurred again (" + e.getMessage()
                    + "), incremented timeout, now sleeping for " + msToSleep + " milliseconds.");
            try {
                Thread.sleep(msToSleep);
            } catch (InterruptedException e1) {
                log.error("Interrupted sleep in timeout method: ", e1);
            }
        } else {
            log.warn("Network related error occurred again, switched to maximum waiting time (" + e.getMessage()
                    + "), sleeping for " + maxMsToSleep + " milliseconds.");
            try {
                Thread.sleep(maxMsToSleep);
            } catch (InterruptedException e1) {
                log.error("Interrupted sleep in timeout method: ", e1);
            }
        }
        return true;
    } else
        return false;
}

From source file:com.amalto.core.delegator.IXtentisWSDelegator.java

@Override
public WSVersion getComponentVersion(WSGetComponentVersion wsGetComponentVersion) throws RemoteException {
    try {/*from w w  w .  j  a va2s .c om*/
        if (WSComponent.DataManager.equals(wsGetComponentVersion.getComponent())) {
            Version version = Version.getVersion(this.getClass());
            return new WSVersion(version.getMajor(), version.getMinor(), version.getRevision(),
                    version.getBuild(), version.getDescription(), version.getDate());
        }
        throw new RemoteException(
                "Version information is not available yet for " + wsGetComponentVersion.getComponent() //$NON-NLS-1$
                        + " components"); //$NON-NLS-1$
    } catch (RemoteException e) {
        throw (e);
    } catch (Exception e) {
        throw new RemoteException(
                (e.getCause() == null ? e.getLocalizedMessage() : e.getCause().getLocalizedMessage()));
    }
}

From source file:com.lp.webapp.zemecs.CommandZE.java

public synchronized String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {

    super.execute(request, response);

    if (request.getCookies() != null) {
        for (int i = 0; i < request.getCookies().length; i++) {
            Cookie cookie = request.getCookies()[i];
            cookie.setMaxAge(10000000);//w w  w  .jav  a 2  s .c  o m
            response.addCookie(cookie);
        }
    }

    String mandant = request.getParameter("mandant");

    Locale localeLogon = getMandantFac().getLocaleDesHauptmandanten();

    String locale = request.getParameter("locale");

    String localeCookie = getCookieValue("locale", request);

    if (localeCookie != null && localeCookie.length() > 3) {
        locale = localeCookie;
    }

    if (locale != null && locale.length() > 3) {
        localeLogon = new Locale(locale.substring(0, 2), locale.substring(2, 4));
    }

    TheClientDto theclientDto = null;
    synchronized (mutex) {
        theclientDto = getLogonFac().logon(Helper.getFullUsername(sUser),
                Helper.getMD5Hash((sUser + new String("lpwebappzemecs")).toCharArray()), localeLogon, null,
                null, new Timestamp(System.currentTimeMillis()));

        if (mandant != null && mandant.length() > 0) {

            theclientDto = getLogonFac().logon(Helper.getFullUsername(sUser),
                    Helper.getMD5Hash((sUser + "lpwebappzemecs").toCharArray()), localeLogon, mandant,
                    theclientDto, new Timestamp(System.currentTimeMillis()));
        } else {
            BenutzerDto benutzerDto = getBenutzerFac().benutzerFindByCBenutzerkennung("lpwebappzemecs",
                    new String(Helper.getMD5Hash("lpwebappzemecs" + "lpwebappzemecs")));
            mandant = benutzerDto.getMandantCNrDefault();
        }
    }

    getTheClient(request, response).setTheClientDto(theclientDto);

    if (command.equals(TheApp.CMD_ZE_BDESTATION)) {
        String ausweis = request.getParameter("ausweis");
        getTheClient(request, response).setSMsg("");

        if (ausweis != null && ausweis.length() > 1) {
            // Personal suchen
            PersonalDto personalDto = getPersonalFac().personalFindByCAusweis(ausweis.substring(2));
            if (personalDto != null) {
                personalDto.setPartnerDto(
                        getPartnerFac().partnerFindByPrimaryKey(personalDto.getPartnerIId(), theclientDto));

                HashMap<String, Serializable> hmParameter = new HashMap<String, Serializable>();
                ZeitdatenDto zeitdatenDto = new ZeitdatenDto();
                zeitdatenDto.setCWowurdegebucht("BDE-Station " + request.getRemoteHost());
                zeitdatenDto.setPersonalIId(personalDto.getIId());
                hmParameter.put("zeitdaten", zeitdatenDto);
                hmParameter.put("person", personalDto.getPartnerDto().formatFixTitelName1Name2());
                getTheClient(request, response).setData(hmParameter);
                setSJSPNext("bdestation2.jsp");
                return getSJSPNext();
            } else {
                getTheClient(request, response)
                        .setSMsg("Ausweis " + ausweis + " bei diesem Mandanten nicht gefunden! ");
            }
        } else {
            getTheClient(request, response).setSMsg("");
        }
    }
    if (command.equals(TheApp.CMD_ZE_BDESTATION2)) {

        HashMap<String, Serializable> hmParameter = (HashMap<String, Serializable>) getTheClient(request,
                response).getData();
        ZeitdatenDto zeitdatenDto = (ZeitdatenDto) hmParameter.get("zeitdaten");
        zeitdatenDto.setTZeit(new Timestamp(System.currentTimeMillis()));

        String option = request.getParameter("option");
        getTheClient(request, response).setSMsg("");

        ParametermandantDto parameterBdeMitTaetigkeitDto = getParameterFac().getMandantparameter(mandant,
                ParameterFac.KATEGORIE_PERSONAL, ParameterFac.PARAMETER_BDE_MIT_TAETIGKEIT);

        Boolean bBdeMitTaetigkeit = (Boolean) parameterBdeMitTaetigkeitDto.getCWertAsObject();
        com.lp.server.artikel.service.ArtikelDto artikelDtoDefaultArbeiztszeit = null;

        if (bBdeMitTaetigkeit == false) {
            ParametermandantDto parameterDtoDefaultarbeitszeit = getParameterFac().getMandantparameter(mandant,
                    ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_DEFAULT_ARBEITSZEITARTIKEL);

            if (parameterDtoDefaultarbeitszeit != null && parameterDtoDefaultarbeitszeit.getCWert() != null
                    && !parameterDtoDefaultarbeitszeit.getCWert().trim().equals("")) {
                try {
                    artikelDtoDefaultArbeiztszeit = getArtikelFac()
                            .artikelFindByCNr(parameterDtoDefaultarbeitszeit.getCWert(), theclientDto);
                    zeitdatenDto.setArtikelIId(artikelDtoDefaultArbeiztszeit.getIId());

                } catch (RemoteException ex2) {
                    myLogger.error("Default-Arbeitszeitartikel " + parameterDtoDefaultarbeitszeit.getCWert()
                            + " nicht vorhanden.", ex2);
                    setSJSPNext("bdestation.jsp");
                    return getSJSPNext();
                }

            } else {
                myLogger.error("Default-Arbeitszeitartikel " + parameterDtoDefaultarbeitszeit.getCWert()
                        + " nicht definiert.");
                setSJSPNext("bdestation.jsp");
                return getSJSPNext();
            }
        }

        if (option != null && option.length() > 2) {

            // Auftrag
            if (option.substring(0, 2).equals("$A") || option.substring(0, 3).equals("$EA")) {
                try {

                    ParametermandantDto parameterDto = getParameterFac().getMandantparameter(mandant,
                            ParameterFac.KATEGORIE_ALLGEMEIN,
                            ParameterFac.PARAMETER_BELEGNUMMERNFORMAT_STELLEN_GESCHAEFTSJAHR);

                    if (parameterDto != null) {
                        if (parameterDto.getCWert() != null && parameterDto.getCWert().equals("4")) {
                            if (option.charAt(4) == 47) {
                                option = "$A"
                                        + Helper.konvertiereDatum2StelligAuf4Stellig(option.substring(2, 4))
                                        + option.substring(4);
                            }
                        }
                    }
                    AuftragDto auftragDto = null;
                    if (option.substring(0, 2).equals("$A")) {

                        auftragDto = getAuftragFac().auftragFindByMandantCNrCNr(mandant, option.substring(2),
                                theclientDto);
                    } else {
                        auftragDto = getAuftragFac().auftragFindByMandantCNrCNr(mandant, option.substring(3),
                                theclientDto);

                    }

                    AuftragpositionDto[] auftragpositionDtos = getAuftragpositionFac()
                            .auftragpositionFindByAuftrag(auftragDto.getIId());

                    if (auftragDto.getAuftragstatusCNr()
                            .equals(com.lp.server.auftrag.service.AuftragServiceFac.AUFTRAGSTATUS_ERLEDIGT)) {
                        setSJSPNext("bdestation.jsp");
                        getTheClient(request, response).setSMsg("Auf Auftrag " + option.substring(2)
                                + " mit Status " + auftragDto.getAuftragstatusCNr().trim()
                                + " darf nicht gebucht werden! ");
                        return getSJSPNext();
                    } else {
                        if (auftragpositionDtos != null && auftragpositionDtos.length > 0) {
                            zeitdatenDto.setIBelegartpositionid(auftragpositionDtos[0].getIId());
                            zeitdatenDto.setIBelegartid(auftragpositionDtos[0].getBelegIId());
                            zeitdatenDto.setCBelegartnr(LocaleFac.BELEGART_AUFTRAG);
                            hmParameter.put("beleg", "A" + option.substring(2));

                            MaschineDto maschineDto = new MaschineDto();
                            maschineDto.setCBez("");
                            hmParameter.put("maschine", maschineDto);

                            if (option.substring(0, 2).equals("$A")) {

                                if (bBdeMitTaetigkeit == false) {
                                    setSJSPNext("bdestation.jsp");
                                    getTheClient(request, response).setSMsg(
                                            getMeldungGebuchtFuerBDE(getTheClient(request, response).getData(),
                                                    artikelDtoDefaultArbeiztszeit.getCNr(), theclientDto));

                                    getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false,
                                            theclientDto);
                                    return getSJSPNext();

                                } else {
                                    setSJSPNext("bdestation4.jsp");
                                }
                            } else {
                                hmParameter.put("beleg", "A" + option.substring(3));
                                setSJSPNext("bdestation3gutschlecht.jsp");

                            }

                            return getSJSPNext();
                        } else {
                            getTheClient(request, response)
                                    .setSMsg("Auftrag " + option.substring(2) + " hat keine Positionen! ");
                            setSJSPNext("bdestation.jsp");
                            return getSJSPNext();
                        }
                    }

                } catch (EJBExceptionLP ex) {
                    getTheClient(request, response).setSMsg(
                            "Auftrag '" + option.substring(2) + "' bei diesem Mandanten nicht gefunden! ");
                    setSJSPNext("bdestation.jsp");
                    return getSJSPNext();
                }
            } // Los
            else if (option.substring(0, 2).equals("$L") || option.substring(0, 3).equals("$EL")) {
                try {

                    ParametermandantDto parameterDto = getParameterFac().getMandantparameter(mandant,
                            ParameterFac.KATEGORIE_ALLGEMEIN,
                            ParameterFac.PARAMETER_BELEGNUMMERNFORMAT_STELLEN_GESCHAEFTSJAHR);

                    if (parameterDto != null) {
                        if (parameterDto.getCWert() != null && parameterDto.getCWert().equals("4")) {
                            if (option.charAt(4) == 47) {
                                option = "$L"
                                        + Helper.konvertiereDatum2StelligAuf4Stellig(option.substring(2, 4))
                                        + option.substring(4);
                            }
                        }
                    }

                    com.lp.server.fertigung.service.LosDto losDto = null;

                    if (option.substring(0, 2).equals("$L")) {
                        losDto = getFertigungFac().losFindByCNrMandantCNr(option.substring(2), mandant);

                    } else {
                        losDto = getFertigungFac().losFindByCNrMandantCNr(option.substring(3), mandant);

                    }

                    // WH 18-01-2006: Los benoetigt keine Positionen

                    if (losDto.getStatusCNr()
                            .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_ANGELEGT)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_AUSGEGEBEN)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_GESTOPPT)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_ERLEDIGT)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_STORNIERT)) {
                        getTheClient(request, response)
                                .setSMsg("Auf Los " + option.substring(2) + " mit Status "
                                        + losDto.getStatusCNr().trim() + " darf nicht gebucht werden! ");
                        setSJSPNext("bdestation.jsp");
                        return getSJSPNext();
                    } else {
                        zeitdatenDto.setIBelegartid(losDto.getIId());
                        zeitdatenDto.setCBelegartnr(LocaleFac.BELEGART_LOS);

                        if (option.substring(0, 2).equals("$L")) {

                            hmParameter.put("beleg", "L" + option.substring(2));

                            if (bBdeMitTaetigkeit == false) {
                                setSJSPNext("bdestation.jsp");
                                getTheClient(request, response).setSMsg(
                                        getMeldungGebuchtFuerBDE(getTheClient(request, response).getData(),
                                                artikelDtoDefaultArbeiztszeit.getCNr(), theclientDto));

                                getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, true,
                                        theclientDto);
                                return getSJSPNext();
                            } else {
                                setSJSPNext("bdestation3.jsp");
                            }
                        } else {
                            hmParameter.put("beleg", "L" + option.substring(3));
                            setSJSPNext("bdestation3gutschlecht.jsp");
                        }

                        return getSJSPNext();

                    }
                } catch (EJBExceptionLP ex) {
                    getTheClient(request, response)
                            .setSMsg("Los '" + option.substring(2) + "' bei diesem Mandanten nicht gefunden! ");
                    setSJSPNext("bdestation.jsp");
                    return getSJSPNext();
                }

            } // Kombi-Code
            else if (option.length() > 1 && option.substring(0, 2).equals("$V")) {
                setSJSPNext("bdestation.jsp");

                if (option.length() < 12) {

                    getTheClient(request, response).setSMsg("Kombicode muss 10-Stellig sein ");
                    return getSJSPNext();
                }

                try {

                    ParametermandantDto parameter = getParameterFac().getMandantparameter(
                            theclientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG,
                            ParameterFac.PARAMETER_LOSNUMMER_AUFTRAGSBEZOGEN);
                    int iVerlaengerungLosnummer = 0;
                    if ((Integer) parameter.getCWertAsObject() >= 1) {
                        iVerlaengerungLosnummer = 2;
                    }

                    com.lp.server.fertigung.service.LosDto losDto = getFertigungFac()
                            .losFindByCNrMandantCNr(option.substring(2, 12 + iVerlaengerungLosnummer), mandant);

                    // WH 18-01-2006: Los benoetigt keine Positionen

                    if (losDto.getStatusCNr()
                            .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_ANGELEGT)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_AUSGEGEBEN)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_GESTOPPT)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_ERLEDIGT)
                            || losDto.getStatusCNr()
                                    .equals(com.lp.server.fertigung.service.FertigungFac.STATUS_STORNIERT)) {
                        getTheClient(request, response)
                                .setSMsg("Auf Los " + option.substring(2) + " mit Status "
                                        + losDto.getStatusCNr().trim() + " darf nicht gebucht werden! ");
                    } else {
                        zeitdatenDto.setIBelegartid(losDto.getIId());
                        zeitdatenDto.setCBelegartnr(LocaleFac.BELEGART_LOS);

                        String maschine = option.substring(12 + iVerlaengerungLosnummer,
                                14 + iVerlaengerungLosnummer);

                        String taetigkeit = option.substring(14 + iVerlaengerungLosnummer);

                        MaschineDto maschineDto = new MaschineDto();
                        maschineDto.setCBez(maschine);
                        hmParameter.put("maschine", maschineDto);

                        hmParameter.put("beleg", "L" + option.substring(2, 12 + iVerlaengerungLosnummer));

                        com.lp.server.artikel.service.ArtikelDto artikelDto = null;
                        try {
                            artikelDto = getArtikelFac().artikelFindByCNr(taetigkeit, theclientDto);

                            zeitdatenDto.setArtikelIId(
                                    getArtikelFac().artikelFindByCNr(taetigkeit, theclientDto).getIId());

                        } catch (RemoteException ex2) {
                            getTheClient(request, response)
                                    .setSMsg("T\u00E4tigkeit '" + taetigkeit + "' nicht gefunden! ");
                            return getSJSPNext();
                        }

                        com.lp.server.fertigung.service.LossollarbeitsplanDto[] dtos = getFertigungFac()
                                .lossollarbeitsplanFindByLosIIdArtikelIIdTaetigkeit(losDto.getIId(),
                                        artikelDto.getIId());

                        if (dtos != null && dtos.length > 0) {

                            if (!maschine.trim().equals("") && !maschine.equals("--")) {

                                try {
                                    Integer maschineIId = getZeiterfassungsFac()
                                            .maschineFindByCIdentifikationsnr(maschine).getIId();

                                    com.lp.server.fertigung.service.LossollarbeitsplanDto[] sollaDtos = getFertigungFac()
                                            .lossollarbeitsplanFindByLosIIdArtikelIIdTaetigkeit(
                                                    zeitdatenDto.getIBelegartid(),
                                                    zeitdatenDto.getArtikelIId());

                                    if (sollaDtos != null && sollaDtos.length > 0) {
                                        MaschinenzeitdatenDto maschinenzeitdatenDto = new MaschinenzeitdatenDto();
                                        maschinenzeitdatenDto.setLossollarbeitsplanIId(sollaDtos[0].getIId());
                                        maschinenzeitdatenDto.setMaschineIId(maschineIId);
                                        maschinenzeitdatenDto
                                                .setPersonalIIdGestartet(zeitdatenDto.getPersonalIId());
                                        maschinenzeitdatenDto.setTVon(zeitdatenDto.getTZeit());
                                        getZeiterfassungsFac().createMaschinenzeitdaten(maschinenzeitdatenDto,
                                                theclientDto);
                                    }

                                } catch (RemoteException ex2) {
                                    getTheClient(request, response)
                                            .setSMsg("Maschine '" + maschine + "' nicht gefunden! ");
                                    return getSJSPNext();
                                }
                            }

                            // PJ 15388
                            if (maschine.equals("--")) {
                                hmParameter.put("fertig", "");
                                if (dtos != null && dtos.length > 0) {

                                    LossollarbeitsplanDto dto = dtos[0];
                                    dto.setBFertig(Helper.boolean2Short(true));

                                    try {
                                        getFertigungFac().updateLossollarbeitsplan(dto, theclientDto);
                                        getTheClient(request, response).setSMsg(getMeldungGebuchtFuerBDE(
                                                getTheClient(request, response).getData(),
                                                taetigkeit.substring(2), theclientDto));
                                        return getSJSPNext();
                                    } catch (EJBExceptionLP ex2) {
                                        getTheClient(request, response).setSMsg("Fehler beim Buchen!");
                                        return getSJSPNext();
                                    }
                                } else {
                                    getTheClient(request, response).setSMsg("Das Los "
                                            + option.substring(2, 12 + iVerlaengerungLosnummer)
                                            + " hat keinen entsprechen Arbeitsgang mit der Artikelnummer "
                                            + taetigkeit.substring(2));
                                    return getSJSPNext();
                                }
                            }

                            zeitdatenDto.setIBelegartpositionid(dtos[0].getIId());
                        } else {
                            com.lp.server.fertigung.service.LossollarbeitsplanDto[] dtosErstePosition = getFertigungFac()
                                    .lossollarbeitsplanFindByLosIId(losDto.getIId());
                            if (dtosErstePosition != null && dtosErstePosition.length > 0) {
                                zeitdatenDto.setIBelegartpositionid(dtosErstePosition[0].getIId());
                            } else {
                                // Bemerkung
                                getTheClient(request, response)
                                        .setSMsg("Los " + option.substring(2) + " hat keine Positionen");
                                return getSJSPNext();

                            }
                        }

                        try {
                            getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, true,
                                    theclientDto);
                            getTheClient(request, response).setSMsg(getMeldungGebuchtFuerBDE(
                                    getTheClient(request, response).getData(), taetigkeit, theclientDto));

                        } catch (EJBExceptionLP ex2) {
                            getTheClient(request, response).setSMsg("Fehler beim Buchen!");
                            return getSJSPNext();
                        }
                    }
                } catch (EJBExceptionLP ex) {
                    getTheClient(request, response)
                            .setSMsg("Los '" + option.substring(2) + "' bei diesem Mandanten nicht gefunden! ");
                    return getSJSPNext();

                }
                return getSJSPNext();
            } // Sondertaetigkeit
            else {

                if (option.substring(1).equals("SALDO")) {

                    java.sql.Timestamp ts = new java.sql.Timestamp(System.currentTimeMillis() - 3600000 * 24);
                    ts = com.lp.util.Helper.cutTimestamp(ts);

                    Calendar c = Calendar.getInstance();
                    c.setTimeInMillis(ts.getTime());

                    String saldoMitUrlaub = "";
                    try {
                        saldoMitUrlaub = getZeiterfassungsFac().erstelleMonatsAbrechnungFuerBDE(
                                zeitdatenDto.getPersonalIId(), new Integer(c.get(Calendar.YEAR)),
                                new Integer(c.get(Calendar.MONTH)), false, new java.sql.Date(ts.getTime()),
                                theclientDto, true, false);

                    } catch (EJBExceptionLP ex7) {

                        if (ex7.getCause() instanceof EJBExceptionLP) {
                            EJBExceptionLP e = (EJBExceptionLP) ex7.getCause();
                            if (e != null && e
                                    .getCode() == EJBExceptionLP.FEHLER_PERSONAL_FEHLER_BEI_EINTRITTSDATUM) {
                                getTheClient(request, response)
                                        .setSMsg(new String("FEHLER_PERSONAL_FEHLER_BEI_EINTRITTSDATUM"));
                                return getSJSPNext();

                            }
                        }
                        getTheClient(request, response).setSMsg(new String(ex7.getMessage()));
                        setSJSPNext("bdestation.jsp");

                    }

                    getTheClient(request, response).setSMsg(saldoMitUrlaub);

                    setSJSPNext("bdestation.jsp");
                    return getSJSPNext();

                } else if (option.substring(1).equals("TAGESSALDO")) {

                    java.sql.Timestamp ts = new java.sql.Timestamp(System.currentTimeMillis() - 3600000 * 24);

                    Double d = getZeiterfassungsFac().berechneTagesArbeitszeit(zeitdatenDto.getPersonalIId(),
                            new java.sql.Date(System.currentTimeMillis()), theclientDto);

                    StringBuffer sb = new StringBuffer();
                    sb.append("Tagesarbeitszeit bis jetzt: "
                            + Helper.rundeKaufmaennisch(new BigDecimal(d.doubleValue()), 2).doubleValue()
                            + "h");
                    sb.append("\r\n");

                    getTheClient(request, response).setSMsg(new String(sb));
                    setSJSPNext("bdestation.jsp");
                    return getSJSPNext();

                } else {

                    try {
                        TaetigkeitDto taetigkeitDto = getZeiterfassungsFac()
                                .taetigkeitFindByCNr(option.substring(1), theclientDto);

                        zeitdatenDto.setTaetigkeitIId(taetigkeitDto.getIId());
                        getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, true, theclientDto);
                        getTheClient(request, response).setSMsg(
                                getMeldungGebuchtFuerBDE(hmParameter, option.substring(1), theclientDto));
                    } catch (EJBExceptionLP ex1) {
                        getTheClient(request, response)
                                .setSMsg("Sondert\u00E4tigkeit '" + option.substring(1) + "' nicht gefunden! ");
                    }
                    hmParameter.put("zeitdaten", zeitdatenDto);
                    setSJSPNext("bdestation.jsp");

                }
                getTheClient(request, response).setData(hmParameter);
                return getSJSPNext();
            }
        }

    } else if (command.equals(TheApp.CMD_ZE_BDESTATION3)) {

        HashMap<String, Serializable> hmParameter = (HashMap<String, Serializable>) getTheClient(request,
                response).getData();
        ZeitdatenDto zeitdatenDto = (ZeitdatenDto) hmParameter.get("zeitdaten");
        zeitdatenDto.setTZeit(new Timestamp(System.currentTimeMillis()));

        String option = request.getParameter("option");
        getTheClient(request, response).setSMsg("");

        if (option != null && option.length() > 0) {

            if (option.equals("$PLUS")) {
                // CK: PJ5589
                String beleg = (String) hmParameter.get("beleg");

                if (beleg.substring(0, 1).equals("L")) {
                    com.lp.server.fertigung.service.LosDto losDto = getFertigungFac()
                            .losFindByCNrMandantCNr(beleg.substring(1), mandant);

                    ZeitverteilungDto zeitverteilungDto = new ZeitverteilungDto();
                    zeitverteilungDto.setLosIId(losDto.getIId());
                    zeitverteilungDto.setTZeit(new Timestamp(System.currentTimeMillis()));
                    zeitverteilungDto.setPersonalIId(zeitdatenDto.getPersonalIId());
                    try {
                        getZeiterfassungsFac().createZeitverteilung(zeitverteilungDto, theclientDto);
                    } catch (EJBExceptionLP e) {
                        hmParameter.remove("beleg");
                        getTheClient(request, response).setData(hmParameter);
                        getTheClient(request, response)
                                .setSMsg("Los '" + losDto.getCNr() + "' wurde bereits mit $PLUS gebucht");
                        setSJSPNext("bdestation2.jsp");
                        return getSJSPNext();
                    }

                } else {
                    getTheClient(request, response).setSMsg("$PLUS ist nur f\u00FCr Lose m\u00F6glich.");
                    setSJSPNext("bdestation.jsp");
                    return getSJSPNext();
                }

                hmParameter.remove("beleg");
                getTheClient(request, response).setData(hmParameter);
                setSJSPNext("bdestation2.jsp");
                return getSJSPNext();

            } else if (option.equals("$STORNO")) {
                getZeiterfassungsFac().removeZeitverteilungByPersonalIIdUndTag(zeitdatenDto.getPersonalIId(),
                        new Timestamp(System.currentTimeMillis()));
                hmParameter.remove("beleg");
                getTheClient(request, response).setData(hmParameter);
                setSJSPNext("bdestation2.jsp");
            } else if (option.equals("$SPERREN")) {

                String beleg = (String) hmParameter.get("beleg");
                if (beleg.substring(0, 1).equals("L")) {
                    com.lp.server.fertigung.service.LosDto losDto = getFertigungFac()
                            .losFindByCNrMandantCNr(beleg.substring(1), mandant);

                    if (losDto.getStuecklisteIId() != null) {
                        Integer artikelIId = getStuecklisteFac()
                                .stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theclientDto)
                                .getArtikelIId();

                        SperrenDto sDto = getArtikelFac().sperrenFindBDurchfertigung(theclientDto);

                        if (sDto != null) {

                            ArtikelsperrenDto aspDtoVorhanden = getArtikelFac()
                                    .artikelsperrenFindByArtikelIIdSperrenIIdOhneExc(artikelIId, sDto.getIId());
                            if (aspDtoVorhanden == null) {
                                ArtikelsperrenDto spDto = new ArtikelsperrenDto();
                                spDto.setArtikelIId(artikelIId);
                                spDto.setSperrenIId(sDto.getIId());

                                PersonalDto pDto = getPersonalFac()
                                        .personalFindByPrimaryKey(zeitdatenDto.getPersonalIId(), theclientDto);

                                String grund = beleg + " " + pDto.getPartnerDto().getCName1nachnamefirmazeile1()
                                        + " " + pDto.getPartnerDto().getCName2vornamefirmazeile2();

                                if (grund.length() > 80) {
                                    grund = grund.substring(0, 79);
                                }

                                spDto.setCGrund(grund);
                                getArtikelFac().createArtikelsperren(spDto, theclientDto);
                                getTheClient(request, response)
                                        .setSMsg("Los " + losDto.getCNr() + " durch Fertigung gesperrt.");
                                setSJSPNext("bdestation.jsp");
                                return getSJSPNext();
                            } else {
                                getTheClient(request, response)
                                        .setSMsg("St\u00FCckliste bereits durch Fertigung gesperrt.");
                                setSJSPNext("bdestation.jsp");
                                return getSJSPNext();
                            }
                        } else {
                            getTheClient(request, response)
                                    .setSMsg("Fertigungssperre in Grunddaten nicht definiert.");
                            setSJSPNext("bdestation.jsp");
                            return getSJSPNext();
                        }

                    }

                    setSJSPNext("bdestation.jsp");
                    return getSJSPNext();
                }

            } else if (option.equals("$FERTIG")) {
                hmParameter.put("fertig", "");
                MaschineDto maschineDto = new MaschineDto();
                maschineDto.setCBez("Fertig");
                hmParameter.put("maschine", maschineDto);
                getTheClient(request, response).setData(hmParameter);
                setSJSPNext("bdestation4.jsp");
                return getSJSPNext();
            } else {

                setSJSPNext("bdestation.jsp");
                // MASCHINE
                if (option.substring(0, 2).equals("$M")) {

                    String maschine = option.substring(2);

                    try {
                        MaschineDto maschineDto = getZeiterfassungsFac()
                                .maschineFindByCIdentifikationsnr(maschine);
                        hmParameter.put("zeitdaten", zeitdatenDto);
                        hmParameter.put("maschine", maschineDto);
                        setSJSPNext("bdestation4.jsp");
                        return getSJSPNext();

                    } catch (EJBExceptionLP ex2) {
                        getTheClient(request, response).setSMsg("Maschine '" + maschine + "' nicht gefunden! ");
                        return getSJSPNext();
                    }

                } // TAETIGKEIT
                else {

                    String taetigkeit = option.substring(2);

                    com.lp.server.artikel.service.ArtikelDto artikelDto = null;
                    try {
                        artikelDto = getArtikelFac().artikelFindByCNr(taetigkeit, theclientDto);

                        zeitdatenDto.setArtikelIId(
                                getArtikelFac().artikelFindByCNr(taetigkeit, theclientDto).getIId());

                    } catch (EJBExceptionLP ex2) {
                        getTheClient(request, response)
                                .setSMsg("T\u00E4tigkeit '" + taetigkeit + "' nicht gefunden! ");
                        return getSJSPNext();
                    }

                    String beleg = (String) hmParameter.get("beleg");

                    if (beleg.substring(0, 1).equals("L")) {
                        com.lp.server.fertigung.service.LosDto losDto = getFertigungFac()
                                .losFindByCNrMandantCNr(beleg.substring(1), mandant);

                        ZeitverteilungDto[] zvDtos = getZeiterfassungsFac()
                                .zeitverteilungFindByPersonalIIdUndTag(zeitdatenDto.getPersonalIId(),
                                        new Timestamp(System.currentTimeMillis()));
                        if (zvDtos != null & zvDtos.length > 0) {

                            if (zvDtos[0].getArtikelIId() == null) {
                                // Abschlussbuchung eintragen
                                ZeitverteilungDto zv = zvDtos[0];
                                zv.setIId(null);
                                zv.setLosIId(losDto.getIId());
                                zv.setArtikelIId(artikelDto.getIId());
                                try {
                                    getZeiterfassungsFac().createZeitverteilung(zv, theclientDto);
                                } catch (EJBExceptionLP e) {
                                    hmParameter.remove("beleg");
                                    getTheClient(request, response).setData(hmParameter);
                                    getTheClient(request, response).setSMsg(
                                            "Los '" + losDto.getCNr() + "' wurde bereits mit $PLUS gebucht");
                                    setSJSPNext("bdestation2.jsp");
                                    return getSJSPNext();
                                }

                                hmParameter.remove("beleg");
                                getTheClient(request, response).setData(hmParameter);
                                getTheClient(request, response)
                                        .setSMsg("Beginnbuchungen f\u00FCr 'Zeitverteilung' abgeschlossen");
                                setSJSPNext("bdestation.jsp");
                                return getSJSPNext();
                            }
                        }

                        com.lp.server.fertigung.service.LossollarbeitsplanDto[] dtos = getFertigungFac()
                                .lossollarbeitsplanFindByLosIIdArtikelIIdTaetigkeit(losDto.getIId(),
                                        artikelDto.getIId());

                        if (dtos != null && dtos.length > 0) {
                            zeitdatenDto.setIBelegartpositionid(dtos[0].getIId());
                        } else {
                            com.lp.server.fertigung.service.LossollarbeitsplanDto[] dtosErstePosition = getFertigungFac()
                                    .lossollarbeitsplanFindByLosIId(losDto.getIId());
                            if (dtosErstePosition != null && dtosErstePosition.length > 0) {
                                zeitdatenDto.setIBelegartpositionid(dtosErstePosition[0].getIId());
                            } else {
                                // Bemerkung
                                getTheClient(request, response)
                                        .setSMsg("Los " + beleg.substring(1) + " hat keine Positionen");
                                return getSJSPNext();

                            }
                        }
                    }

                    try {
                        getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, true, theclientDto);
                        getTheClient(request, response).setSMsg(getMeldungGebuchtFuerBDE(
                                getTheClient(request, response).getData(), taetigkeit, theclientDto));

                        return getSJSPNext();
                    } catch (EJBExceptionLP ex2) {
                        getTheClient(request, response).setSMsg("Fehler beim Buchen!");
                        return getSJSPNext();
                    }
                }
            }
        }
    } else if (command.equals(TheApp.CMD_ZE_BDESTATION3GUTSCHLECHT)) {
        HashMap<Object, Object> hmParameter = (HashMap<Object, Object>) getTheClient(request, response)
                .getData();
        ZeitdatenDto zeitdatenDto = (ZeitdatenDto) hmParameter.get("zeitdaten");

        String gutstueck = request.getParameter("gutstueck");
        if (gutstueck.equals("")) {
            gutstueck = "0";
        }
        String schlechtstueck = request.getParameter("schlechtstueck");
        if (schlechtstueck.equals("")) {
            schlechtstueck = "0";
        }

        BigDecimal bdGutstueck = null;
        BigDecimal bdSchlechtstueck = null;
        try {
            bdGutstueck = new BigDecimal(gutstueck);
            bdSchlechtstueck = new BigDecimal(schlechtstueck);
        } catch (NumberFormatException ex9) {
            getTheClient(request, response)
                    .setSMsg("Gut/Schlechtst\u00FCck d\u00FCrfen nur aus Zahlen bestehen.");
            setSJSPNext("bdestation.jsp");
            return getSJSPNext();
        }

        if (bdGutstueck.doubleValue() < 0 || bdSchlechtstueck.doubleValue() < 0) {
            getTheClient(request, response).setSMsg("Gut/Schlechtst\u00FCck m\u00FCssen Positiv sein.");
            setSJSPNext("bdestation.jsp");
            return getSJSPNext();
        }
        Integer taetigkeitIId_Ende = getZeiterfassungsFac()
                .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_ENDE, theclientDto).getIId();
        ZeitdatenDto zeitdatenDtoEnde = new ZeitdatenDto();
        zeitdatenDtoEnde.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime() + 1000));
        zeitdatenDtoEnde.setTaetigkeitIId(taetigkeitIId_Ende);
        zeitdatenDtoEnde.setPersonalIId(zeitdatenDto.getPersonalIId());

        // Hole letzten begonnenen Auftrag und hinterlege gut/schlechtstueck
        Session session = FLRSessionFactory.getFactory().openSession();
        org.hibernate.Criteria liste = session.createCriteria(FLRZeitdaten.class);
        liste.add(Expression.eq(ZeiterfassungFac.FLR_ZEITDATEN_PERSONAL_I_ID, zeitdatenDto.getPersonalIId()));
        liste.add(Expression.gt(ZeiterfassungFac.FLR_ZEITDATEN_T_ZEIT,
                Helper.cutTimestamp(zeitdatenDto.getTZeit())));

        liste.addOrder(Order.desc(ZeiterfassungFac.FLR_ZEITDATEN_T_ZEIT));
        List<?> letzerAuftrag = liste.list();

        Iterator<?> it = letzerAuftrag.iterator();
        ZeitdatenDto letzterAuftrag = null;

        while (it.hasNext()) {
            FLRZeitdaten flrLetzerAuftrag = (FLRZeitdaten) it.next();

            if (flrLetzerAuftrag.getC_belegartnr() != null && flrLetzerAuftrag.getI_belegartid() != null) {
                if (flrLetzerAuftrag.getC_belegartnr().equals(zeitdatenDto.getCBelegartnr())
                        && flrLetzerAuftrag.getI_belegartid().equals(zeitdatenDto.getIBelegartid())) {
                    letzterAuftrag = getZeiterfassungsFac()
                            .zeitdatenFindByPrimaryKey(flrLetzerAuftrag.getI_id(), theclientDto);
                    break;
                }
            } else if (flrLetzerAuftrag.getTaetigkeit_i_id() != null
                    && flrLetzerAuftrag.getTaetigkeit_i_id().equals(taetigkeitIId_Ende)) {
                break;
            }

        }

        if (letzterAuftrag != null) {
            // Hier eintragen
            // letzterAuftrag.setNGut(bdGutstueck);
            // letzterAuftrag.setNSchlecht(bdSchlechtstueck);
            getZeiterfassungsFac().updateZeitdaten(letzterAuftrag, theclientDto);
            // und buche ENDE
            getZeiterfassungsFac().createZeitdaten(zeitdatenDtoEnde, false, false, false, theclientDto);

        } else {
            // was nun?
            // Beginn und ende Buchen
            getZeiterfassungsFac().createZeitdaten(zeitdatenDto, false, false, false, theclientDto);
            getZeiterfassungsFac().createZeitdaten(zeitdatenDtoEnde, false, false, false, theclientDto);

        }

        session.close();
        getTheClient(request, response).setSMsg(
                getMeldungGebuchtFuerBDE(getTheClient(request, response).getData(), null, theclientDto));

        setSJSPNext("bdestation.jsp");
        return getSJSPNext();
    }

    else if (command.equals(TheApp.CMD_ZE_BDESTATION4)) {
        HashMap<?, ?> hmParameter = (HashMap<?, ?>) getTheClient(request, response).getData();
        ZeitdatenDto zeitdatenDto = (ZeitdatenDto) hmParameter.get("zeitdaten");
        zeitdatenDto.setTZeit(new Timestamp(System.currentTimeMillis()));

        String taetigkeit = request.getParameter("taetigkeit");
        getTheClient(request, response).setSMsg("");
        if (taetigkeit != null && taetigkeit.length() > 0) {

            setSJSPNext("bdestation.jsp");
            com.lp.server.artikel.service.ArtikelDto artikelDto = null;
            try {
                artikelDto = getArtikelFac().artikelFindByCNr(taetigkeit.substring(2), theclientDto);

                zeitdatenDto.setArtikelIId(artikelDto.getIId());
            } catch (EJBExceptionLP ex2) {
                getTheClient(request, response)
                        .setSMsg("T\u00E4tigkeit '" + taetigkeit.substring(2) + "' nicht gefunden! ");
                return getSJSPNext();
            }

            String beleg = (String) hmParameter.get("beleg");

            if (beleg.substring(0, 1).equals("L")) {
                com.lp.server.fertigung.service.LosDto losDto = getFertigungFac()
                        .losFindByCNrMandantCNr(beleg.substring(1), mandant);

                com.lp.server.fertigung.service.LossollarbeitsplanDto[] dtos = getFertigungFac()
                        .lossollarbeitsplanFindByLosIIdArtikelIIdTaetigkeit(losDto.getIId(),
                                artikelDto.getIId());

                if (hmParameter.containsKey("fertig")) {

                    if (dtos != null && dtos.length > 0) {

                        LossollarbeitsplanDto dto = dtos[0];
                        dto.setBFertig(Helper.boolean2Short(true));

                        ParametermandantDto parameterDtoTriggerTops = getParameterFac().getMandantparameter(
                                mandant, ParameterFac.KATEGORIE_FERTIGUNG,
                                ParameterFac.PARAMETER_TRIGGERT_TRUMPF_TOPS_ABLIEFERUNG);

                        try {
                            getFertigungFac().updateLossollarbeitsplan(dto, theclientDto);

                            // PJ 17916
                            if (parameterDtoTriggerTops.getCWert() != null
                                    && parameterDtoTriggerTops.getCWert().trim().length() > 0) {
                                ArtikelDto aDto = getArtikelFac().artikelFindByCNrMandantCNrOhneExc(
                                        parameterDtoTriggerTops.getCWert().trim(), theclientDto.getMandant());

                                if (aDto == null) {
                                    getTheClient(request, response).setSMsg(
                                            "Der Artikel, der im Parameter TRIGGERT_TRUMPF_TOPS_ABLIEFERUNG hinterlegt ist, exisitiert nicht! "
                                                    + parameterDtoTriggerTops.getCWert());
                                    return getSJSPNext();
                                }
                                if (aDto != null && aDto.getIId().equals(artikelDto.getIId())) {
                                    getFertigungFac().bucheTOPSArtikelAufHauptLager(losDto.getIId(),
                                            theclientDto, null);
                                }
                            }

                            getTheClient(request, response)
                                    .setSMsg(getMeldungGebuchtFuerBDE(getTheClient(request, response).getData(),
                                            taetigkeit.substring(2), theclientDto));
                            return getSJSPNext();
                        } catch (EJBExceptionLP ex2) {
                            getTheClient(request, response).setSMsg("Fehler beim Buchen!");
                            return getSJSPNext();
                        }
                    } else {
                        getTheClient(request, response).setSMsg("Das Los " + beleg.substring(1)
                                + " hat keinen entsprechen Arbeitsgang mit der Artikelnummer "
                                + taetigkeit.substring(2));
                        return getSJSPNext();
                    }

                }

                if (dtos != null && dtos.length > 0) {
                    zeitdatenDto.setIBelegartpositionid(dtos[0].getIId());
                } else {
                    com.lp.server.fertigung.service.LossollarbeitsplanDto[] dtosErstePosition = getFertigungFac()
                            .lossollarbeitsplanFindByLosIId(losDto.getIId());
                    if (dtosErstePosition != null && dtosErstePosition.length > 0) {
                        zeitdatenDto.setIBelegartpositionid(dtosErstePosition[0].getIId());
                    } else {
                        // Bemerkung
                        getTheClient(request, response)
                                .setSMsg("Los " + beleg.substring(1) + " hat keine Positionen");
                        return getSJSPNext();

                    }
                }
            }

            // Maschinenzeitdaten buchen (geht nur auf Los)

            if (hmParameter.containsKey("maschine") && zeitdatenDto.getCBelegartnr() != null
                    && zeitdatenDto.getCBelegartnr().equals(LocaleFac.BELEGART_LOS)
                    && zeitdatenDto.getIBelegartid() != null) {
                MaschineDto maschineDto = (MaschineDto) hmParameter.get("maschine");

                com.lp.server.fertigung.service.LossollarbeitsplanDto[] dtos = getFertigungFac()
                        .lossollarbeitsplanFindByLosIIdArtikelIIdTaetigkeit(zeitdatenDto.getIBelegartid(),
                                zeitdatenDto.getArtikelIId());

                if (dtos != null && dtos.length > 0) {
                    MaschinenzeitdatenDto maschinenzeitdatenDto = new MaschinenzeitdatenDto();
                    maschinenzeitdatenDto.setPersonalIIdGestartet(zeitdatenDto.getPersonalIId());
                    maschinenzeitdatenDto.setTVon(zeitdatenDto.getTZeit());
                    maschinenzeitdatenDto.setLossollarbeitsplanIId(dtos[0].getIId());
                    maschinenzeitdatenDto.setMaschineIId(maschineDto.getIId());
                    getZeiterfassungsFac().createMaschinenzeitdaten(maschinenzeitdatenDto, theclientDto);

                }
            }

            try {
                getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false, theclientDto);
                getTheClient(request, response).setSMsg(getMeldungGebuchtFuerBDE(
                        getTheClient(request, response).getData(), taetigkeit.substring(2), theclientDto));
                return getSJSPNext();
            } catch (EJBExceptionLP ex2) {
                getTheClient(request, response).setSMsg("Fehler beim Buchen!");
                return getSJSPNext();
            }

        }
    } else if (command.equals(TheApp.CMD_ZE_MECS_ONLCHECK)) {
        String beleg = request.getParameter("beleg");

        if (beleg == null) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter 'beleg' muss angegeben werden");
            return null;
        }

        beleg = beleg.trim();

        if (beleg.length() < 2) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                    "Parameter 'beleg' muss mindestens 2 Zeichen lang sein");
            return null;
        }

        String status = null;
        BigDecimal offeneMenge = new BigDecimal(0);

        String ueberliefernErlaubt = "1";
        try {

            if (beleg.substring(0, 2).equals("$A")) {

                AuftragDto auftragDto = getAuftragFac().auftragFindByMandantCNrCNr(mandant, beleg.substring(2),
                        theclientDto);
                status = auftragDto.getAuftragstatusCNr();

            } else if (beleg.substring(0, 2).equals("$L")) {
                LosDto losDto = getFertigungFac().losFindByCNrMandantCNr(beleg.substring(2), mandant);
                status = losDto.getStatusCNr();

                BigDecimal erledigteMenge = getFertigungFac().getErledigteMenge(losDto.getIId(), theclientDto);
                offeneMenge = losDto.getNLosgroesse().subtract(erledigteMenge);

                if (losDto.getStuecklisteIId() != null) {
                    StuecklisteDto stkDto = getStuecklisteFac()
                            .stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theclientDto);

                    if (Helper.short2boolean(stkDto.getBUeberlieferbar()) == false) {
                        ueberliefernErlaubt = "0";
                    }

                }

            }

        } catch (EJBExceptionLP ex8) {
            status = "Beleg existiert nicht";
        }

        StringBuffer sb = new StringBuffer();

        sb.append(Helper.fitString2Length(beleg, 40, ' '));
        sb.append(Helper.fitString2Length(status, 40, ' '));

        // Offene Menge 17 stellig

        DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance();
        dfs.setDecimalSeparator('.');
        DecimalFormat dFormat = new DecimalFormat("0.0000", dfs);
        if (offeneMenge.doubleValue() < 0) {
            sb.append("-");
        } else {
            sb.append(" ");
        }
        sb.append(Helper.fitString2LengthAlignRight(dFormat.format(offeneMenge.abs()), 16, ' '));
        sb.append(ueberliefernErlaubt);
        sb.append("\r\n");

        getTheClient(request, response).setSMsg(new String(sb));

    } else if (command.equals(TheApp.CMD_ZE_MECS_ONLINECHECK_ABL)) {
        String beleg = request.getParameter("beleg");
        String menge = request.getParameter("menge");

        if (beleg == null) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter 'beleg' muss angegeben werden");
            return null;
        }
        if (menge == null) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter 'menge' muss angegeben werden");
            return null;
        }

        BigDecimal nMenge = new BigDecimal(menge.trim());

        beleg = beleg.trim();

        if (beleg.length() < 2) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                    "Parameter 'beleg' muss mindestens 2 Zeichen lang sein");
            return null;
        }

        String status = null;
        BigDecimal offeneMenge = new BigDecimal(0);
        boolean ueberliefernErlaubt = true;
        try {

            if (beleg.substring(0, 2).equals("$A")) {

                AuftragDto auftragDto = getAuftragFac().auftragFindByMandantCNrCNr(mandant, beleg.substring(2),
                        theclientDto);
                status = auftragDto.getAuftragstatusCNr();

            } else if (beleg.substring(0, 2).equals("$L")) {
                LosDto losDto = getFertigungFac().losFindByCNrMandantCNr(beleg.substring(2), mandant);
                status = losDto.getStatusCNr();

                BigDecimal erledigteMenge = getFertigungFac().getErledigteMenge(losDto.getIId(), theclientDto);
                offeneMenge = losDto.getNLosgroesse().subtract(erledigteMenge);
                if (losDto.getStuecklisteIId() != null) {
                    StuecklisteDto stkDto = getStuecklisteFac()
                            .stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theclientDto);
                    ueberliefernErlaubt = Helper.short2boolean(stkDto.getBUeberlieferbar());
                }

            }

        } catch (EJBExceptionLP ex8) {
            status = "Beleg existiert nicht";
        }

        StringBuffer sb = new StringBuffer();

        // Zeile1
        sb.append(Helper.fitString2Length(beleg, 40, ' '));
        sb.append(Helper.fitString2Length(status, 40, ' '));
        sb.append("\r\n");
        // Offene Menge 17 stellig

        // Zeile2

        // Zuerst 3 Stellen Fehlernummer: 000= Abliefern moeglich 001=
        // Status erlaubt kein Abliefern - 002=
        // Menge der Ablieferung zu gross

        String fehlercode = "";
        String text1 = "";
        String text2 = "";
        if (status.equals(LocaleFac.STATUS_ERLEDIGT) || status.equals(LocaleFac.STATUS_STORNIERT)
                || status.equals(LocaleFac.STATUS_ANGELEGT) || status.equals(LocaleFac.STATUS_GESTOPPT)) {
            fehlercode = "001";
            text1 = "Nicht erlaubt!";
            text2 = "Status: " + status;
        } else {

            if (nMenge.doubleValue() <= offeneMenge.doubleValue()) {
                // Wenn Abliefermenge kleiner als Offene Menge, dann =OK
                fehlercode = "000";
                text1 = "Ablieferung";
                text2 = "erlaubt";
            } else {
                if (ueberliefernErlaubt == false) {
                    fehlercode = "002";
                    text1 = "Nicht erlaubt!";

                    DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance();
                    dfs.setDecimalSeparator('.');
                    DecimalFormat dFormat = new DecimalFormat("#####0", dfs);
                    text2 = "Nur " + Helper.fitString2LengthAlignRight(dFormat.format(offeneMenge), 6, ' ')
                            + " Stk offen";
                } else {
                    fehlercode = "000";
                    text1 = "Ablieferung";
                    text2 = "erlaubt";
                }
            }
        }
        sb.append(fehlercode);

        // 37 Leerstellen
        sb.append(Helper.fitString2Length("", 37, ' '));

        // Text1
        sb.append(Helper.fitString2Length(text1, 20, ' '));
        // Text2
        sb.append(Helper.fitString2Length(text2, 20, ' '));

        sb.append("\r\n");

        getTheClient(request, response).setSMsg(new String(sb));

    } else if (command.equals(TheApp.CMD_ZE_MECS_AUSWEISE)) {
        String fingerprint = request.getParameter("fingerprint");

        if (fingerprint != null) {
            StringBuffer sb = new StringBuffer();
            PersonalfingerDto[] personalfingerDtos = getZutrittscontrollerFac().personalfingerFindAll();
            for (int i = 0; i < personalfingerDtos.length; i++) {
                PersonalfingerDto personalfingerDto = personalfingerDtos[i];
                String id = personalfingerDto.getIId() + "";
                id = Helper.fitString2LengthAlignRight(id, 8, '0');
                StringBuffer tmp = new StringBuffer();
                // unbedingt nach ausweis sortieren
                tmp.setLength(0);
                tmp.append(Helper.fitString2Length(id, 20, ' '));

                PersonalDto personalDto = getPersonalFac()
                        .personalFindByPrimaryKey(personalfingerDto.getPersonalIId(), theclientDto);

                tmp.append(Helper.fitString2LengthAlignRight(personalDto.getCPersonalnr() + "", 5, '0')); // persnr
                tmp.append(Helper.fitString2Length("", 3, ' ')); // zutrkl

                String sVorname = personalDto.getPartnerDto().getCName2vornamefirmazeile2();
                String sNachname = personalDto.getPartnerDto().getCName1nachnamefirmazeile1();

                if (sVorname == null) {
                    sVorname = "";
                }
                tmp.append(Helper.fitString2Length(sVorname + " " + sNachname, 25, ' ')); // name
                sb.append(tmp).append("\r\n");

            }
            getTheClient(request, response).setSMsg(new String(sb));
        } else {

            // Ausweisnummern holen
            StringBuffer sb = new StringBuffer();
            PersonalDto[] personalDtos = getPersonalFac().personalFindByCAusweisSortiertNachCAusweis();

            ParametermandantDto parameterDto = getParameterFac().getMandantparameter(mandant,
                    ParameterFac.KATEGORIE_PERSONAL, ParameterFac.PARAMETER_LEAD_IN_AUSWEISNUMMER_MECS);

            String leadIn = "";
            if (parameterDto.getCWert() != null) {
                leadIn = parameterDto.getCWert().trim();
            }

            for (int i = 0; i < personalDtos.length; i++) {
                PersonalDto personalDto = personalDtos[i];
                personalDto.setPartnerDto(
                        getPartnerFac().partnerFindByPrimaryKey(personalDto.getPartnerIId(), theclientDto));
                StringBuffer tmp = new StringBuffer();
                // unbedingt nach ausweis sortieren
                tmp.setLength(0);
                tmp.append(Helper.fitString2Length(leadIn + personalDto.getCAusweis(), 20, ' ')); // ausweis
                tmp.append(Helper.fitString2LengthAlignRight(personalDto.getCPersonalnr() + "", 5, '0')); // persnr
                tmp.append(Helper.fitString2Length("", 3, ' ')); // zutrkl

                String sVorname = personalDto.getPartnerDto().getCName2vornamefirmazeile2();
                String sNachname = personalDto.getPartnerDto().getCName1nachnamefirmazeile1();

                if (sVorname == null) {
                    sVorname = "";
                }

                tmp.append(Helper.fitString2Length(sVorname + " " + sNachname, 25, ' ')); // name
                sb.append(tmp).append("\r\n");

            }

            getTheClient(request, response).setSMsg(new String(sb));
        }
    } else if (command.equals(TheApp.CMD_ZE_MECS_ERLAUBTETAETIGKEITEN)) {

        Session session = FLRSessionFactory.getFactory().openSession();
        org.hibernate.Criteria liste = session.createCriteria(FLRTaetigkeit.class);
        liste.add(Expression.eq(ZeiterfassungFac.FLR_TAETIGKEIT_B_BDEBUCHBAR, Helper.boolean2Short(true)));
        liste.addOrder(Order.asc("c_nr"));
        List<?> lReisezeiten = liste.list();
        Iterator<?> it = lReisezeiten.iterator();

        StringBuffer sb = new StringBuffer();

        while (it.hasNext()) {
            FLRTaetigkeit flrTaetigkeit = (FLRTaetigkeit) it.next();
            StringBuffer tmp = new StringBuffer();

            tmp.setLength(0);
            tmp.append('$');
            tmp.append(Helper.fitString2LengthAlignRight(flrTaetigkeit.getC_nr(), 14, ' ')); // persnr
            sb.append(tmp).append("\r\n");

        }
        session.close();

        getTheClient(request, response).setSMsg(new String(sb));

    } else if (command.equals(TheApp.CMD_ZE_MECS_PERSSTAMM)) {
        // Personalstamm holen

        StringBuffer sb = new StringBuffer();

        // unbedingt nach personalnummer sortieren
        PersonalDto[] personalDtos = getPersonalFac().personalFindByCAusweisSortiertNachPersonalnr();
        for (int i = 0; i < personalDtos.length; i++) {
            PersonalDto personalDto = personalDtos[i];
            personalDto.setPartnerDto(
                    getPartnerFac().partnerFindByPrimaryKey(personalDto.getPartnerIId(), theclientDto));
            StringBuffer tmp = new StringBuffer();

            tmp.setLength(0);
            tmp.append(Helper.fitString2LengthAlignRight(personalDto.getCPersonalnr() + "", 5, '0')); // persnr
            tmp.append(Helper.fitString2Length("", 3, ' ')); // zutrkl

            String sVorname = personalDto.getPartnerDto().getCName2vornamefirmazeile2();
            String sNachname = personalDto.getPartnerDto().getCName1nachnamefirmazeile1();

            if (sVorname == null) {
                sVorname = "";
            }

            tmp.append(Helper.fitString2Length(sVorname + " " + sNachname, 25, ' ')); // name
            sb.append(tmp).append("\r\n");

        }
        getTheClient(request, response).setSMsg(new String(sb));
    } else if (command.equals(TheApp.CMD_ZE_MECS_SALDO)) {
        String ausweis = "";
        try {
            ausweis = request.getParameter("ausweis");
        } catch (Exception e) {
            getTheClient(request, response).setBResponseIsReady(true);
            response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter 'ausweis' nicht angegeben");
            myLogger.error("doPost; Exception aufgetreten", e);
            return null;
        }
        if (ausweis.startsWith("$P")) {
            ausweis = ausweis.substring(2);
        }

        ausweis = ausweis.trim();

        ParametermandantDto parameterDto = getParameterFac().getMandantparameter(mandant,
                ParameterFac.KATEGORIE_PERSONAL, ParameterFac.PARAMETER_LEAD_IN_AUSWEISNUMMER_MECS);

        String leadIn = "";
        if (parameterDto.getCWert() != null) {
            leadIn = parameterDto.getCWert().trim();
            int iLaenge = leadIn.length();
            if (ausweis.length() > iLaenge) {
                ausweis = ausweis.substring(iLaenge);
            }
        }

        PersonalDto personalDto = getPersonalFac().personalFindByCAusweis(ausweis);

        personalDto.setPartnerDto(
                getPartnerFac().partnerFindByPrimaryKey(personalDto.getPartnerIId(), theclientDto));

        java.sql.Timestamp ts = new java.sql.Timestamp(System.currentTimeMillis() - 3600000 * 24);
        ts = com.lp.util.Helper.cutTimestamp(ts);

        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(ts.getTime());

        String urlaub = null;
        try {
            urlaub = getZeiterfassungsFac().erstelleMonatsAbrechnungFuerBDE(personalDto.getIId(),
                    new Integer(c.get(Calendar.YEAR)), new Integer(c.get(Calendar.MONTH)), false,
                    new java.sql.Date(ts.getTime()), theclientDto, true, false);

        } catch (EJBExceptionLP ex7) {

            if (ex7.getCause() instanceof EJBExceptionLP) {
                EJBExceptionLP e = (EJBExceptionLP) ex7.getCause();
                if (e != null && e.getCode() == EJBExceptionLP.FEHLER_PERSONAL_FEHLER_BEI_EINTRITTSDATUM) {
                    getTheClient(request, response)
                            .setSMsg(new String("FEHLER_PERSONAL_FEHLER_BEI_EINTRITTSDATUM"));
                    return getSJSPNext();

                }
            }
            getTheClient(request, response).setSMsg(new String(ex7.getMessage()));
            setSJSPNext("bdestation.jsp");

        }

        getTheClient(request, response).setSMsg(urlaub);

    } else if (command.equals(TheApp.CMD_ZE_MECS_ZEITBUCHEN)
            || command.equals(TheApp.CMD_ZE_MECS_ZEITBUCHENFINGERPRINT)) {
        String record = null;

        if (command.equals(TheApp.CMD_ZE_MECS_ZEITBUCHEN)) {
            record = request.getParameter("record");
        } else {
            record = request.getParameter("recordfingerprint");

        }

        record = Helper.fitString2Length(record, 200, ' ');

        String schluesselNr = record.substring(19, 39).trim();
        String zeit = record.substring(5, 19);
        String taetigkeit = record.substring(3, 5);
        // SP753
        String terminal = record.substring(64, 86);
        // Damit die Sollzeitenueberschreitungspruefeung nicht durchgefuehrt
        // wird:
        terminal = "ZT:" + terminal;
        terminal = terminal.trim();

        boolean bAbliefern = false;

        ArtikelDto artikelDtoTaetigkeit = null;

        if (record.substring(130, 155).trim().equals("$ABLIEFERN")) {
            bAbliefern = true;
        } else {

            artikelDtoTaetigkeit = getArtikelFac().artikelFindByCNrOhneExc(record.substring(132, 155).trim(),
                    theclientDto);
        }

        ZeitdatenDto zeitdatenDto = new ZeitdatenDto();
        ZeitdatenDto zeitdatenDtoEnde = new ZeitdatenDto();
        zeitdatenDto.setCWowurdegebucht(terminal);
        zeitdatenDtoEnde.setCWowurdegebucht(terminal);

        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, new Integer(zeit.substring(0, 4)).intValue());
        c.set(Calendar.MONTH, new Integer(zeit.substring(4, 6)).intValue() - 1);
        c.set(Calendar.DAY_OF_MONTH, new Integer(zeit.substring(6, 8)).intValue());
        c.set(Calendar.HOUR_OF_DAY, new Integer(zeit.substring(8, 10)).intValue());
        c.set(Calendar.MINUTE, new Integer(zeit.substring(10, 12)).intValue());
        c.set(Calendar.SECOND, new Integer(zeit.substring(12, 14)).intValue());

        zeitdatenDto.setTZeit(new java.sql.Timestamp(c.getTime().getTime()));
        zeitdatenDtoEnde.setTZeit(new java.sql.Timestamp(c.getTime().getTime() + 1000));
        zeitdatenDto.setTAendern(zeitdatenDto.getTZeit());
        zeitdatenDtoEnde.setTAendern(zeitdatenDtoEnde.getTZeit());

        // Wenn hier NullPointerException, dann kann kein Personal mit
        // Ausweisnummer gefunden werden
        Integer personalIId = null;

        if (schluesselNr.startsWith("$P")) {
            try {
                personalIId = getPersonalFac().personalFindByCAusweis(schluesselNr.substring(2)).getIId();
            } catch (NullPointerException ex11) {
                String msg = "Person mit Ausweis " + schluesselNr + " nicht vorhanden. ORIGINAL-Request:"
                        + record;
                myLogger.error(msg, ex11);
                response.setStatus(HttpServletResponse.SC_OK);
                return getSJSPNext();

            }

        } else {
            if (command.equals(TheApp.CMD_ZE_MECS_ZEITBUCHEN)) {
                try {
                    personalIId = getPersonalFac().personalFindByCAusweis(schluesselNr).getIId();
                } catch (NullPointerException ex11) {
                    String msg = "Person mit Ausweis " + schluesselNr + " nicht vorhanden. ORIGINAL-Request:"
                            + record;
                    myLogger.error(msg, ex11);

                    response.setStatus(HttpServletResponse.SC_OK);
                    return getSJSPNext();

                }

            } else if (command.equals(TheApp.CMD_ZE_MECS_ZEITBUCHENFINGERPRINT)) {
                Integer i = new Integer(schluesselNr);
                getZutrittscontrollerFac().personalfingerFindByPrimaryKey(i).getPersonalIId();
                personalIId = getZutrittscontrollerFac().personalfingerFindByPrimaryKey(i).getPersonalIId();
            }
        }

        zeitdatenDto.setPersonalIId(personalIId);
        zeitdatenDtoEnde.setPersonalIId(personalIId);
        zeitdatenDtoEnde.setTaetigkeitIId(getZeiterfassungsFac()
                .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_ENDE, theclientDto).getIId());

        // Taetigkeiten, die MECS liefert muessen in der Tabelle LP_KEYVALUE
        // uebersetzt werden (als String)
        // Bsp: MECSTERMINAL|B1|KOMMT|java.lang.String
        try {
            String sTaetigkeit = null;

            if (schluesselNr.startsWith("$P")) {
                sTaetigkeit = record.substring(110, 126);
                Integer taetigkeitIId_Ende = getZeiterfassungsFac()
                        .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_ENDE, theclientDto).getIId();
                String gutStueck = record.substring(160, 172);
                String schlechtStueck = record.substring(173, 189);

                BigDecimal nGutStueck = new BigDecimal(gutStueck.trim());
                BigDecimal nSchlechtStueck = new BigDecimal(schlechtStueck.trim());
                Integer artikelIId = null;

                if (artikelDtoTaetigkeit == null) {
                    ParametermandantDto parameterDto = getParameterFac().getMandantparameter(mandant,
                            ParameterFac.KATEGORIE_ALLGEMEIN,
                            ParameterFac.PARAMETER_DEFAULT_ARBEITSZEITARTIKEL);

                    if (parameterDto != null && parameterDto.getCWert() != null
                            && !parameterDto.getCWert().trim().equals("")) {
                        try {
                            artikelIId = getArtikelFac().artikelFindByCNr(parameterDto.getCWert(), theclientDto)
                                    .getIId();

                        } catch (RemoteException ex2) {
                            myLogger.error("Default-Arbeitszeitartikel " + parameterDto.getCWert()
                                    + " nicht vorhanden.", ex2);
                            return getSJSPNext();
                        }

                    } else {
                        myLogger.error(
                                "Default-Arbeitszeitartikel " + parameterDto.getCWert() + " nicht definiert.");
                        return getSJSPNext();
                    }
                } else {
                    artikelIId = artikelDtoTaetigkeit.getIId();
                }

                if (sTaetigkeit.startsWith("$A")) {

                    AuftragDto auftragDto = null;
                    try {
                        if (sTaetigkeit.startsWith("$A")) {
                            auftragDto = getAuftragFac().auftragFindByMandantCNrCNr(mandant,
                                    sTaetigkeit.substring(2).trim(), theclientDto);
                        } else {
                            auftragDto = getAuftragFac().auftragFindByMandantCNrCNr(mandant,
                                    sTaetigkeit.substring(3).trim(), theclientDto);

                        }
                    } catch (RemoteException ex8) {
                        zeitdatenDto.setCBemerkungZuBelegart(
                                "Auftrag " + sTaetigkeit.substring(2).trim() + " konnte nicht gefunden werden");
                        zeitdatenDto.setTaetigkeitIId(taetigkeitIId_Ende);
                        getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false, theclientDto);

                        return getSJSPNext();
                    }
                    // Wenn Auftragsbeginn ->
                    if (sTaetigkeit.startsWith("$A")) {
                        AuftragpositionDto[] auftragpositionDtos = getAuftragpositionFac()
                                .auftragpositionFindByAuftrag(auftragDto.getIId());

                        if (auftragpositionDtos.length > 0) {
                            zeitdatenDto.setCBelegartnr(LocaleFac.BELEGART_AUFTRAG);
                            zeitdatenDto.setArtikelIId(artikelIId);
                            zeitdatenDto.setIBelegartid(auftragDto.getIId());
                            zeitdatenDto.setIBelegartpositionid(auftragpositionDtos[0].getIId());
                        } else {
                            myLogger.error("Buchung von MECS-TERMINAL, Ausweis: " + schluesselNr + ", Auftrag"
                                    + sTaetigkeit + " hat keine Positionen.");
                            return getSJSPNext();
                        }
                    }
                } else if (sTaetigkeit.startsWith("$EL") || sTaetigkeit.startsWith("$L")) {

                    com.lp.server.fertigung.service.LosDto losDto = null;
                    try {
                        if (sTaetigkeit.startsWith("$L")) {

                            losDto = getFertigungFac().losFindByCNrMandantCNr(

                                    sTaetigkeit.substring(2).trim(), mandant);

                        } else {
                            losDto = getFertigungFac().losFindByCNrMandantCNr(

                                    sTaetigkeit.substring(3).trim(), mandant);

                        }

                    } catch (EJBExceptionLP ex10) {
                        zeitdatenDto.setCBemerkungZuBelegart(
                                "Los " + sTaetigkeit.substring(2).trim() + " konnte nicht gefunden werden");
                        zeitdatenDto.setTaetigkeitIId(taetigkeitIId_Ende);
                        getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false, theclientDto);
                        return getSJSPNext();
                    }

                    if (bAbliefern == true) {
                        LosablieferungDto losablieferungDto = new LosablieferungDto();
                        losablieferungDto.setLosIId(losDto.getIId());
                        String menge = record.substring(155, 170);
                        BigDecimal nMenge = new BigDecimal(menge.trim());
                        losablieferungDto.setNMenge(nMenge);
                        losablieferungDto.setTAendern(zeitdatenDto.getTZeit());

                        if (nMenge.doubleValue() > 0) {
                            // lt. FM
                            BigDecimal bdBisherErledigt = getFertigungFac().getErledigteMenge(losDto.getIId(),
                                    theclientDto);

                            if (bdBisherErledigt.add(nMenge).doubleValue() > losDto.getNLosgroesse()
                                    .doubleValue()) {
                                getFertigungFac().aendereLosgroesse(losDto.getIId(),
                                        bdBisherErledigt.add(nMenge).intValue(), false, theclientDto);

                                // SP933
                                losDto.setNLosgroesse(bdBisherErledigt.add(nMenge));

                            }

                            try {
                                getFertigungFac().bucheMaterialAufLos(losDto, nMenge, false, false, true,
                                        theclientDto, null, false);
                            } catch (Exception e1) {
                                // Terminal darf keinen Fehler bekommen
                            }

                            getFertigungFac().createLosablieferungFuerTerminalOhnePreisberechnung(
                                    losablieferungDto, theclientDto, false);

                            try {
                                getFertigungFac().aktualisiereNachtraeglichPreiseAllerLosablieferungen(
                                        losDto.getIId(), theclientDto, true);
                            } catch (Exception e) {
                                // PREISBERECHNUNG FEHLGESCHLAGEN
                                myLogger.error("Preisberechnung der Ablieferungen f\u00FCr Los "
                                        + losDto.getCNr() + " fehlgeschlagen. Bitte manuell ausfuehren", e);
                            }
                        }

                        // PJ17748

                        ParametermandantDto parameterAblieferungBuchtEndeDto = getParameterFac()
                                .getMandantparameter(mandant, ParameterFac.KATEGORIE_FERTIGUNG,
                                        ParameterFac.PARAMETER_ABLIEFERUNG_BUCHT_ENDE);

                        Boolean bAblieferungBuchtEndeDto = (Boolean) parameterAblieferungBuchtEndeDto
                                .getCWertAsObject();

                        if (bAblieferungBuchtEndeDto == true) {
                            zeitdatenDto.setTaetigkeitIId(taetigkeitIId_Ende);
                            zeitdatenDto.setCBelegartnr(null);
                            zeitdatenDto.setArtikelIId(null);
                            zeitdatenDto.setIBelegartid(null);
                            zeitdatenDto.setIBelegartpositionid(null);
                            Integer zeitdatenIId = getZeiterfassungsFac().createZeitdaten(zeitdatenDto, false,
                                    false, false, theclientDto);

                            // PJ17797
                            if (nMenge.doubleValue() > 0) {
                                if (getMandantFac().darfAnwenderAufZusatzfunktionZugreifen(
                                        MandantFac.ZUSATZFUNKTION_STUECKRUECKMELDUNG, theclientDto)) {

                                    Integer lossollarbeitsplanIId = null;
                                    LossollarbeitsplanDto[] sollDtos = getFertigungFac()
                                            .lossollarbeitsplanFindByLosIId(losDto.getIId());
                                    if (sollDtos.length > 0) {
                                        lossollarbeitsplanIId = sollDtos[sollDtos.length - 1].getIId();
                                    } else {
                                        lossollarbeitsplanIId = getFertigungFac()
                                                .defaultArbeitszeitartikelErstellen(losDto, theclientDto);
                                    }

                                    LosgutschlechtDto losgutschlechtDto = new LosgutschlechtDto();
                                    losgutschlechtDto.setZeitdatenIId(zeitdatenIId);
                                    losgutschlechtDto.setLossollarbeitsplanIId(lossollarbeitsplanIId);
                                    losgutschlechtDto.setNGut(nMenge);
                                    losgutschlechtDto.setNSchlecht(new BigDecimal(0));
                                    losgutschlechtDto.setNInarbeit(new BigDecimal(0));

                                    getFertigungFac().createLosgutschlecht(losgutschlechtDto, theclientDto);
                                }
                            }

                        }

                        return getSJSPNext();
                    }

                    // Wenn Auftragsbeginn ->
                    if (sTaetigkeit.startsWith("$L")) {
                        zeitdatenDto.setCBelegartnr(LocaleFac.BELEGART_LOS);
                        zeitdatenDto.setArtikelIId(artikelIId);
                        zeitdatenDto.setIBelegartid(losDto.getIId());

                        LossollarbeitsplanDto[] sollDtos = getFertigungFac()
                                .lossollarbeitsplanFindByLosIIdArtikelIIdTaetigkeit(losDto.getIId(),
                                        artikelIId);
                        if (sollDtos.length > 0) {
                            zeitdatenDto.setIBelegartpositionid(sollDtos[0].getIId());
                        }
                    } else {
                        // Hole letzten begonnenen Auftrag und hinterlege
                        // gut/schlechtstueck
                        Session session = FLRSessionFactory.getFactory().openSession();
                        org.hibernate.Criteria liste = session.createCriteria(FLRZeitdaten.class);
                        liste.add(Expression.eq(ZeiterfassungFac.FLR_ZEITDATEN_PERSONAL_I_ID, personalIId));
                        /*
                         * liste.add(Expression.eq(ZeiterfassungFac.
                         * FLR_ZEITDATEN_C_BELEGARTNR ,
                         * LocaleFac.BELEGART_LOS)); liste.add(Expression.eq
                         * (ZeiterfassungFac.FLR_ZEITDATEN_I_BELEGARTID,
                         * losDto.getIId()));
                         */
                        liste.add(Expression.gt(ZeiterfassungFac.FLR_ZEITDATEN_T_ZEIT,
                                Helper.cutTimestamp(zeitdatenDto.getTZeit())));

                        liste.addOrder(Order.desc(ZeiterfassungFac.FLR_ZEITDATEN_T_ZEIT));
                        // liste.setMaxResults(1);
                        List<?> lReisezeiten = liste.list();

                        Iterator<?> it = lReisezeiten.iterator();
                        zeitdatenDto.setCBelegartnr(LocaleFac.BELEGART_LOS);
                        zeitdatenDto.setArtikelIId(artikelIId);
                        zeitdatenDto.setIBelegartid(losDto.getIId());

                        ZeitdatenDto letzterAuftrag = null;
                        while (it.hasNext()) {
                            FLRZeitdaten flrLetzerAuftrag = (FLRZeitdaten) it.next();

                            if (flrLetzerAuftrag.getC_belegartnr() != null
                                    && flrLetzerAuftrag.getI_belegartid() != null) {
                                if (flrLetzerAuftrag.getC_belegartnr().equals(zeitdatenDto.getCBelegartnr())
                                        && flrLetzerAuftrag.getI_belegartid()
                                                .equals(zeitdatenDto.getIBelegartid())) {
                                    letzterAuftrag = getZeiterfassungsFac().zeitdatenFindByPrimaryKey(
                                            flrLetzerAuftrag.getI_id(), theclientDto);
                                    break;
                                }
                            } else if (flrLetzerAuftrag.getTaetigkeit_i_id() != null
                                    && flrLetzerAuftrag.getTaetigkeit_i_id().equals(taetigkeitIId_Ende)) {
                                break;
                            }

                        }

                        if (letzterAuftrag != null) {
                            // Hier eintragen
                            ZeitdatenDto auftragsbeginn = getZeiterfassungsFac()
                                    .zeitdatenFindByPrimaryKey(letzterAuftrag.getIId(), theclientDto);

                            // auftragsbeginn.setNGut(nGutStueck);
                            // auftragsbeginn.setNSchlecht(nSchlechtStueck);
                            getZeiterfassungsFac().updateZeitdaten(auftragsbeginn, theclientDto);
                            // und buche ENDE
                            zeitdatenDto = zeitdatenDtoEnde;

                        } else {
                            zeitdatenDto.setCBelegartnr(LocaleFac.BELEGART_LOS);
                            zeitdatenDto.setArtikelIId(artikelIId);
                            zeitdatenDto.setIBelegartid(losDto.getIId());
                            // zeitdatenDto.setNGut(nGutStueck);
                            // zeitdatenDto.setNSchlecht(nSchlechtStueck);

                            getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false,
                                    theclientDto);
                            zeitdatenDto = zeitdatenDtoEnde;
                        }
                        session.close();

                        /*
                         * if (lReisezeiten.size() > 0) { FLRZeitdaten
                         * flrZeitdaten = (FLRZeitdaten)
                         * lReisezeiten.iterator().next();
                         * 
                         * ZeitdatenDto losbeginn = getZeiterfassungsFac().
                         * zeitdatenFindByPrimaryKey(flrZeitdaten.getI_id(),
                         * cNrUser);
                         * 
                         * losbeginn.setNGut(nGutStueck);
                         * losbeginn.setNSchlecht(nSchlechtStueck);
                         * getZeiterfassungsFac().updateZeitdaten(losbeginn,
                         * cNrUser); //und buche ENDE zeitdatenDto =
                         * zeitdatenDtoEnde; } else {
                         * zeitdatenDto.setCBelegartnr
                         * (LocaleFac.BELEGART_LOS);
                         * zeitdatenDto.setArtikelIId(artikelIId);
                         * zeitdatenDto.setIBelegartid(losDto.getIId());
                         * zeitdatenDto.setNGut(nGutStueck);
                         * zeitdatenDto.setNSchlecht(nSchlechtStueck);
                         * getZeiterfassungsFac
                         * ().createZeitdaten(zeitdatenDto, true, true,
                         * cNrUser); zeitdatenDto = zeitdatenDtoEnde; }
                         * 
                         * session.close();
                         */

                    }

                } else {
                    zeitdatenDto.setTaetigkeitIId(getZeiterfassungsFac().taetigkeitFindByCNr(
                            Helper.fitString2Length(sTaetigkeit.substring(1), 15, ' '), theclientDto).getIId());
                }

            }

            else {
                sTaetigkeit = getSystemServicesFac()
                        .keyvalueFindByPrimaryKey(SystemServicesFac.KEYVALUE_MECSTERMINAL, taetigkeit)
                        .getCValue();
                if (sTaetigkeit != null && !sTaetigkeit.equals(ZeiterfassungFac.TAETIGKEIT_REISE.trim())) {
                    zeitdatenDto.setTaetigkeitIId(getZeiterfassungsFac()
                            .taetigkeitFindByCNr(Helper.fitString2Length(sTaetigkeit, 15, ' '), theclientDto)
                            .getIId());
                }
            }

            // Resezeiten wenn Taetigkeit REISE
            if (sTaetigkeit != null && sTaetigkeit.equals(ZeiterfassungFac.TAETIGKEIT_REISE.trim())) {
                ReiseDto reiseDto = new ReiseDto();
                reiseDto.setPersonalIId(personalIId);

                // Letzte Reise von HEUTE holen
                // Heute 00:00 Uhr
                Calendar cTemp = Calendar.getInstance();
                cTemp.setTimeInMillis(zeitdatenDto.getTZeit().getTime());
                cTemp.set(Calendar.HOUR_OF_DAY, 0);
                cTemp.set(Calendar.MINUTE, 0);
                cTemp.set(Calendar.SECOND, 0);
                cTemp.set(Calendar.MILLISECOND, 0);

                Session sessReise = FLRSessionFactory.getFactory().openSession();
                org.hibernate.Criteria reisezeiten = sessReise.createCriteria(FLRReise.class);
                reisezeiten.add(Expression.eq(ZeiterfassungFac.FLR_REISE_PERSONAL_I_ID, personalIId));
                reisezeiten.add(Expression.ge(ZeiterfassungFac.FLR_REISE_T_ZEIT,
                        new Timestamp(cTemp.getTimeInMillis())));
                reisezeiten.add(Expression.lt(ZeiterfassungFac.FLR_REISE_T_ZEIT, zeitdatenDto.getTZeit()));
                reisezeiten.addOrder(Order.desc(ZeiterfassungFac.FLR_REISE_T_ZEIT));
                reisezeiten.setMaxResults(1);
                List<?> lReisezeiten = reisezeiten.list();

                if (lReisezeiten.size() == 0) {
                    reiseDto.setBBeginn(Helper.boolean2Short(true));
                } else {
                    FLRReise flrReise = (FLRReise) lReisezeiten.get(0);
                    if (Helper.short2boolean(flrReise.getB_beginn()) == true) {
                        reiseDto.setBBeginn(Helper.boolean2Short(false));
                    } else {
                        reiseDto.setBBeginn(Helper.boolean2Short(true));

                    }
                }

                reiseDto.setTZeit(zeitdatenDto.getTZeit());

                Integer partnerMandant = getMandantFac().mandantFindByPrimaryKey(mandant, theclientDto)
                        .getPartnerIId();
                PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerMandant, theclientDto);

                if (partnerDto.getLandplzortIId() == null) {
                    throw new Exception("Mandant hat kein Land hinterlegt");
                }

                DiaetenDto[] dtos = getZeiterfassungsFac()
                        .diaetenFindByLandIId(partnerDto.getLandplzortDto().getIlandID());

                if (dtos.length == 0) {
                    // Einen anlegen
                    DiaetenDto dto = new DiaetenDto();
                    dto.setCBez(partnerDto.getLandplzortDto().getLandDto().getCName());
                    dto.setLandIId(partnerDto.getLandplzortDto().getIlandID());
                    reiseDto.setDiaetenIId(getZeiterfassungsFac().createDiaeten(dto));
                } else {
                    reiseDto.setDiaetenIId(dtos[0].getIId());
                }

                getZeiterfassungsFac().createReise(reiseDto, theclientDto);
                response.setStatus(HttpServletResponse.SC_OK);
                response.flushBuffer();
                getTheClient(request, response).setBResponseIsReady(true);

                return getSJSPNext();
            }
        } catch (Exception ex3) {
            ex3.printStackTrace();
            // lt. FM darf an das MECS-Terminal nur Status=200
            // zurueckgegeben werden
            response.setStatus(HttpServletResponse.SC_OK);
            return getSJSPNext();
        }

        getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false, theclientDto);

        response.setStatus(HttpServletResponse.SC_OK);
        response.flushBuffer();
        getTheClient(request, response).setBResponseIsReady(true);
    } else if (command.equals(TheApp.CMD_ZE_QUICKZE)) {

    } else if (command.equals(TheApp.CMD_ZE_RECHNERSTART1)) {
        int i = 0;
    } else if (command.equals(TheApp.CMD_ZE_QUICKZEITERFASSUNG)) {
        if (getTheClient(request, response).getSMsg() == null) {
            getTheClient(request, response).setSMsg("");
        }

        String username = getCookieValue("anmeldename", request);
        String password = getCookieValue("pass", request);

        if (localeCookie != null && localeCookie.length() > 3) {
            localeLogon = new Locale(localeCookie.substring(0, 2), localeCookie.substring(2, 4));
        }

        if (username == null || password == null) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                    "Es wurde kein Benutzername oder Kennwort angegeben. Bitte verwenden Sie http://?????cmd=quickze");

        }
        try {
            theclientDto = getLogonFac().logon(Helper.getFullUsername(username),
                    Helper.getMD5Hash((username + password).toCharArray()), localeLogon, null, null,
                    new Timestamp(System.currentTimeMillis()));
        } catch (EJBExceptionLP ex12) {

            int code = ex12.getCode();
            if (code == EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Benutzername '" + username + "' konnte im System nicht gefunden werden");
            } else if (code == EJBExceptionLP.FEHLER_FALSCHES_KENNWORT) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Kennwort f\u00FCr Benutzername '" + username + "' ist falsch.");
            } else if (code == EJBExceptionLP.FEHLER_BENUTZER_IST_GESPERRT) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Benutzername '" + username + "' ist gesperrt.");
            } else if (code == EJBExceptionLP.FEHLER_BENUTZER_IST_NICHT_MEHR_GUELTIG) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Benutzername '" + username + "' ist nicht mehr g\u00FCltig.");
            } else if (code == EJBExceptionLP.FEHLER_BENUTZER_DARF_SICH_BEI_DIESEM_MANDANTEN_NICHT_ANMELDEN) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Benutzername '" + username + "' darf sich bei dem Mandanten nicht anmelden.");
            } else if (code == EJBExceptionLP.FEHLER_BENUTZER_KEIN_EINTRAG_IN_BENUTZERMANDANT) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Kein Eintrag in Benutzermandant f\u00FCr Benutzername '" + username + "'.");
            } else if (ex12.getCode() == EJBExceptionLP.FEHLER_MAXIMALE_BENUTZERANZAHL_UEBERSCHRITTEN) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Maximale Benutzeranzahl \u00FCberschritten '" + username + "'.");
                return null;
            } else if (code == EJBExceptionLP.FEHLER_BENUTZER_DARF_SICH_IN_DIESER_SPRACHE_NICHT_ANMELDEN) {
                ArrayList<?> al = ((EJBExceptionLP) ex12.getCause()).getAlInfoForTheClient();
                String zusatz = "";
                if (al.size() > 0 && al.get(0) instanceof Locale) {
                    Locale loc = (Locale) al.get(0);
                    zusatz = "(" + loc.getDisplayLanguage() + "|" + loc.getDisplayCountry() + ")";
                }
                response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Benutzer '" + username + "' darf sich in '" + zusatz + "' nicht anmelden.");
            }

            return null;
        }

        PersonalDto personalDto = getPersonalFac().personalFindByPrimaryKey(theclientDto.getIDPersonal(),
                theclientDto);

        personalDto.setPartnerDto(
                getPartnerFac().partnerFindByPrimaryKey(personalDto.getPartnerIId(), theclientDto));

        HashMap<String, Object> hmData = new HashMap<String, Object>();

        TextDto textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.sondertaetigkeit",
                theclientDto.getMandant(), theclientDto.getLocUiAsString());
        if (textDto != null) {
            hmData.put("bezeichnung_sondertaetigkeit", textDto.getCText());
        } else {
            hmData.put("bezeichnung_sondertaetigkeit", "Sondert\u00E4tigkeit");
        }

        // Belegarten holen

        Map<String, String> b = getZeiterfassungsFac().getBebuchbareBelegarten(theclientDto);

        hmData.put("belegarten", b);

        String firstBelegart = (String) b.keySet().iterator().next();
        String belegart = null;
        if (request.getParameter("belegart") == null) {
            belegart = firstBelegart;
        } else {
            belegart = request.getParameter("belegart");
        }

        if (belegart.equals(LocaleFac.BELEGART_AUFTRAG)) {
            textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.offenerauftrag",
                    theclientDto.getMandant(), theclientDto.getLocUiAsString());
        } else if (belegart.equals(LocaleFac.BELEGART_LOS)) {
            textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.offeneslos",
                    theclientDto.getMandant(), theclientDto.getLocUiAsString());
        } else if (belegart.equals(LocaleFac.BELEGART_ANGEBOT)) {
            textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.offenesangebot",
                    theclientDto.getMandant(), theclientDto.getLocUiAsString());
        } else if (belegart.equals(LocaleFac.BELEGART_PROJEKT)) {
            textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.offenesprojekt",
                    theclientDto.getMandant(), theclientDto.getLocUiAsString());
        }
        if (textDto != null) {
            hmData.put("bezeichnung_offenerauftrag", textDto.getCText());
        } else {
            hmData.put("bezeichnung_offenerauftrag", "Offener Beleg");
        }

        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.taetigkeit",
                theclientDto.getMandant(), theclientDto.getLocUiAsString());
        if (textDto != null) {
            hmData.put("bezeichnung_taetigkeit", textDto.getCText());
        } else {
            hmData.put("bezeichnung_taetigkeit", "T\u00E4tigkeit");
        }

        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.kunde",
                theclientDto.getMandant(), theclientDto.getLocUiAsString());
        if (textDto != null) {
            hmData.put("bezeichnung_kunde", textDto.getCText());
        } else {
            hmData.put("bezeichnung_kunde", "Kunde");
        }

        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.belegart",
                theclientDto.getMandant(), theclientDto.getLocUiAsString());
        if (textDto != null) {
            hmData.put("bezeichnung_belegart", textDto.getCText());
        } else {
            hmData.put("bezeichnung_belegart", "Belegart");
        }

        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.bemerkung",
                theclientDto.getMandant(), theclientDto.getLocUiAsString());
        if (textDto != null) {
            hmData.put("bezeichnung_bemerkung", textDto.getCText());
        } else {
            hmData.put("bezeichnung_bemerkung", "Bemerkung");
        }

        hmData.put("locale", Helper.locale2String(localeLogon).trim());
        hmData.put("mandant", mandant);
        hmData.put("person", personalDto.getPartnerDto().formatAnrede());

        // Kunden mit offenen Auftraegen holen
        Session session = FLRSessionFactory.getFactory().openSession();
        String sQuery = "";
        if (belegart.equals(LocaleFac.BELEGART_AUFTRAG)) {
            sQuery = "SELECT flrkunde.flrpartner.c_name1nachnamefirmazeile1, flrkunde.flrpartner.c_name2vornamefirmazeile2, flrkunde.flrpartner.i_id "
                    + " FROM FLRAuftrag AS auftrag WHERE (auftrag.auftragstatus_c_nr='" + LocaleFac.STATUS_OFFEN
                    + "' OR auftrag.auftragstatus_c_nr='" + LocaleFac.STATUS_TEILERLEDIGT
                    + "') AND auftrag.mandant_c_nr='" + theclientDto.getMandant() + "'"
                    + "  GROUP BY flrkunde.flrpartner.c_name1nachnamefirmazeile1, flrkunde.flrpartner.c_name2vornamefirmazeile2, flrkunde.flrpartner.i_id  ORDER BY flrkunde.flrpartner.c_name1nachnamefirmazeile1 ASC";
        } else if (belegart.equals(LocaleFac.BELEGART_ANGEBOT)) {
            sQuery = "SELECT flrkunde.flrpartner.c_name1nachnamefirmazeile1, flrkunde.flrpartner.c_name2vornamefirmazeile2, flrkunde.flrpartner.i_id "
                    + " FROM FLRAngebot AS angebot WHERE (angebot.angebotstatus_c_nr='" + LocaleFac.STATUS_OFFEN
                    + "') AND angebot.mandant_c_nr='" + theclientDto.getMandant() + "'"
                    + "  GROUP BY flrkunde.flrpartner.c_name1nachnamefirmazeile1, flrkunde.flrpartner.c_name2vornamefirmazeile2, flrkunde.flrpartner.i_id  ORDER BY flrkunde.flrpartner.c_name1nachnamefirmazeile1 ASC";
        } else if (belegart.equals(LocaleFac.BELEGART_PROJEKT)) {
            sQuery = "SELECT flrpartner.c_name1nachnamefirmazeile1, flrpartner.c_name2vornamefirmazeile2, flrpartner.i_id "
                    + " FROM FLRProjekt AS projekt WHERE projekt.status_c_nr<>'"
                    + ProjektServiceFac.PROJEKT_STATUS_STORNIERT
                    + "' AND projekt.t_erledigungsdatum IS NULL AND projekt.mandant_c_nr='"
                    + theclientDto.getMandant() + "'"
                    + "  GROUP BY flrpartner.c_name1nachnamefirmazeile1, flrpartner.c_name2vornamefirmazeile2, flrpartner.i_id  ORDER BY flrpartner.c_name1nachnamefirmazeile1 ASC";

        }
        LinkedHashMap<Object, Object> tmKunden = new LinkedHashMap<Object, Object>();
        Integer firstKunde = null;
        if (!belegart.equals(LocaleFac.BELEGART_LOS)) {
            Query kunden = session.createQuery(sQuery);

            List<?> resultList = kunden.list();

            Iterator<?> resultListIterator = resultList.iterator();

            int row = 0;

            while (resultListIterator.hasNext()) {
                Object o[] = (Object[]) resultListIterator.next();
                if (row == 0) {
                    firstKunde = (Integer) o[2];
                }
                if (o[1] == null) {
                    tmKunden.put(o[2], o[0]);

                } else {
                    tmKunden.put(o[2], o[0] + " " + o[1]);

                }
                row++;
            }
            session.close();
        } else {

            sQuery = "SELECT los " + " FROM FLRLosReport AS los WHERE (los.status_c_nr='"
                    + LocaleFac.STATUS_AUSGEGEBEN + "' OR los.status_c_nr='" + LocaleFac.STATUS_IN_PRODUKTION
                    + "' OR los.status_c_nr='" + LocaleFac.STATUS_TEILERLEDIGT + "')  AND los.mandant_c_nr='"
                    + theclientDto.getMandant()
                    + "' AND ( los.flrauftrag IS NOT NULL OR los.flrkunde IS NOT NULL) ";

            Query kunden = session.createQuery(sQuery);

            List<?> resultList = kunden.list();

            Iterator<?> resultListIterator = resultList.iterator();

            int row = 0;

            while (resultListIterator.hasNext()) {
                FLRLosReport los = (FLRLosReport) resultListIterator.next();

                Integer partnerIId = null;
                String kundenname = "";
                if (los.getFlrauftrag() != null) {
                    partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id();

                    kundenname += los.getFlrauftrag().getFlrkunde().getFlrpartner()
                            .getC_name1nachnamefirmazeile1();

                    if (los.getFlrauftrag().getFlrkunde().getFlrpartner()
                            .getC_name2vornamefirmazeile2() != null) {
                        kundenname += " " + los.getFlrauftrag().getFlrkunde().getFlrpartner()
                                .getC_name2vornamefirmazeile2();
                    }

                } else {
                    partnerIId = los.getFlrkunde().getFlrpartner().getI_id();
                    kundenname += los.getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1();

                    if (los.getFlrkunde().getFlrpartner().getC_name2vornamefirmazeile2() != null) {
                        kundenname += " " + los.getFlrkunde().getFlrpartner().getC_name2vornamefirmazeile2();
                    }
                }

                if (row == 0) {
                    firstKunde = partnerIId;
                }
                if (!tmKunden.containsKey(partnerIId)) {

                    tmKunden.put(partnerIId, kundenname);
                }

                row++;
            }

            tmKunden = (LinkedHashMap) Helper.sortByValue(tmKunden);

            // leeren Kunden einfuegen
            tmKunden.put("", "--KEIN--");

            session.close();
        }
        hmData.put("kunden", tmKunden);

        // Sondertaetigkeiten holen

        Map<Integer, String> m = getZeiterfassungsFac()
                .getAllSprSondertaetigkeitenNurBDEBuchbar(theclientDto.getLocUiAsString());

        hmData.put("taetigkeiten", m);

        // Kunden holen

        Integer kunde = null;
        if (request.getParameter("kunde") == null) {
            kunde = firstKunde;
        } else {
            if (!request.getParameter("kunde").equals("")) {
                if (!request.getParameter("kunde").equals(" ")) {
                    if (!request.getParameter("kunde").trim().equals("null")) {
                        kunde = new Integer(request.getParameter("kunde").trim());
                    }
                }

            }
        }

        hmData.put("selectedbelegart", belegart);

        session = FLRSessionFactory.getFactory().openSession();

        if (belegart.equals(LocaleFac.BELEGART_AUFTRAG)) {

            sQuery = "SELECT auftrag.i_id, auftrag.c_nr, auftrag.c_bez, auftrag.t_liefertermin, auftrag.flrkunde.flrpartner.i_id "
                    + " FROM FLRAuftrag AS auftrag WHERE (auftrag.auftragstatus_c_nr='" + LocaleFac.STATUS_OFFEN
                    + "' OR auftrag.auftragstatus_c_nr='" + LocaleFac.STATUS_TEILERLEDIGT
                    + "') AND auftrag.flrkunde.flrpartner.i_id=" + kunde
                    + " AND auftrag.b_versteckt=0 ORDER BY auftrag.c_nr ASC";
        } else if (belegart.equals(LocaleFac.BELEGART_LOS)) {
            sQuery = "SELECT los.i_id, los.c_nr, los.c_projekt, los.t_produktionsende, coalesce(auftragpartner.i_id,kundepartner.i_id) "
                    + " FROM FLRLosReport AS los LEFT OUTER JOIN los.flrauftrag.flrkunde.flrpartner as auftragpartner LEFT OUTER JOIN los.flrkunde.flrpartner as kundepartner  WHERE (los.status_c_nr='"
                    + LocaleFac.STATUS_AUSGEGEBEN + "' OR los.status_c_nr='" + LocaleFac.STATUS_IN_PRODUKTION
                    + "' OR los.status_c_nr='" + LocaleFac.STATUS_TEILERLEDIGT + "') ";
            if (kunde != null) {
                sQuery += " AND ( auftragpartner.i_id=" + kunde + " OR kundepartner.i_id=" + kunde + ")";

            } else {
                sQuery += " AND ( auftragpartner.i_id IS NULL AND kundepartner.i_id IS NULL)";
            }
            sQuery += " ORDER BY los.c_nr ASC";
        } else if (belegart.equals(LocaleFac.BELEGART_ANGEBOT)) {
            sQuery = "SELECT angebot.i_id, angebot.c_nr, angebot.c_bez, angebot.t_realisierungstermin, angebot.flrkunde.flrpartner.i_id "
                    + " FROM FLRAngebot AS angebot WHERE angebot.angebotstatus_c_nr='" + LocaleFac.STATUS_OFFEN
                    + "' AND angebot.flrkunde.flrpartner.i_id=" + kunde + "  ORDER BY angebot.c_nr ASC";
        } else if (belegart.equals(LocaleFac.BELEGART_PROJEKT)) {
            sQuery = "SELECT projekt.i_id, projekt.c_nr, projekt.c_titel, projekt.t_zielwunschdatum, projekt.partner_i_id "
                    + " FROM FLRProjekt AS projekt WHERE projekt.status_c_nr<>'"
                    + ProjektServiceFac.PROJEKT_STATUS_STORNIERT
                    + "' AND projekt.t_erledigungsdatum IS NULL AND projekt.partner_i_id=" + kunde
                    + " ORDER BY projekt.c_nr ASC";
        }
        Query auftraege = session.createQuery(sQuery);

        List<?> resultList = auftraege.list();

        Iterator resultListIterator = resultList.iterator();
        LinkedHashMap<Object, Object> tmAuftraege = new LinkedHashMap<Object, Object>();
        Object partnerIId = null;
        String selectedAuftragId = null;
        while (resultListIterator.hasNext()) {
            Object o[] = (Object[]) resultListIterator.next();
            partnerIId = (Integer) o[4];

            if (o[2] == null) {
                tmAuftraege.put(o[0], o[1]);

            } else {
                tmAuftraege.put(o[0], o[1] + " " + o[2]);

            }
            if (selectedAuftragId == null) {
                selectedAuftragId = o[0].toString();
            }
        }

        session.close();
        hmData.put("auftraege", tmAuftraege);

        hmData.put("selectedkunde", partnerIId);

        if (request.getParameter("auftrag") != null && request.getParameter("auftrag").length() > 0) {
            selectedAuftragId = request.getParameter("auftrag");

        }

        // Artikel zu Auftrag holen
        session = FLRSessionFactory.getFactory().openSession();

        if (belegart.equals(LocaleFac.BELEGART_AUFTRAG)) {

            sQuery = "SELECT a.i_id, a.flrartikel.i_id FROM FLRAuftragposition AS a WHERE a.flrauftrag.i_id="
                    + selectedAuftragId + " AND a.flrartikel.artikelart_c_nr='"
                    + ArtikelFac.ARTIKELART_ARBEITSZEIT + "'";
        } else if (belegart.equals(LocaleFac.BELEGART_LOS)) {

            sQuery = "SELECT a.i_id, a.flrartikel.i_id FROM FLRLossollarbeitsplan AS a WHERE a.los_i_id="
                    + selectedAuftragId + " AND a.flrartikel.artikelart_c_nr='"
                    + ArtikelFac.ARTIKELART_ARBEITSZEIT + "'";
        } else if (belegart.equals(LocaleFac.BELEGART_ANGEBOT)) {

            sQuery = "SELECT a.i_id, a.flrartikel.i_id FROM FLRAngebotposition AS a WHERE a.flrangebot.i_id="
                    + selectedAuftragId + " AND a.flrartikel.artikelart_c_nr='"
                    + ArtikelFac.ARTIKELART_ARBEITSZEIT + "'";
        }
        LinkedHashMap<Object, Object> tmArtikel = new LinkedHashMap<Object, Object>();
        if (!belegart.equals(LocaleFac.BELEGART_PROJEKT)) {
            Query artikelListe = session.createQuery(sQuery);

            resultList = artikelListe.list();

            resultListIterator = resultList.iterator();

            if (resultList.size() > 0) {
                tmArtikel.put(-1, " - - - - - - Beleg - - - - - -");
            }

            while (resultListIterator.hasNext()) {
                Object[] zeile = (Object[]) resultListIterator.next();

                Integer artikelIId = (Integer) zeile[1];

                String sollIst = "";

                if (belegart.equals(LocaleFac.BELEGART_AUFTRAG)) {

                    BigDecimal bdSoll = getAuftragpositionFac()
                            .auftragpositionFindByPrimaryKey((Integer) zeile[0]).getNMenge();
                    sollIst = "; Soll: " + Helper.formatZahl(bdSoll, 2, theclientDto.getLocUi());

                    Double dIst;
                    try {

                        boolean bZuvieleZeitbuchungen = getZeiterfassungsFac()
                                .sindZuvieleZeitdatenEinesBelegesVorhanden(belegart,
                                        new Integer(selectedAuftragId), theclientDto);
                        if (bZuvieleZeitbuchungen == false) {

                            dIst = getZeiterfassungsFac().getSummeZeitenEinesBeleges(belegart,
                                    new Integer(selectedAuftragId), (Integer) zeile[0], null, null, null,
                                    theclientDto);
                            sollIst += " Ist: " + Helper.formatZahl(dIst, 2, theclientDto.getLocUi());
                        }
                    } catch (Exception e) {
                        sollIst += " Ist: ERR";
                    }

                }

                String artikel = getArtikelFac().artikelFindByPrimaryKey(artikelIId, theclientDto)
                        .formatArtikelbezeichnung() + sollIst;
                if (!tmArtikel.containsKey(artikelIId)) {
                    tmArtikel.put(artikelIId, artikel);

                }
            }
            session.close();
        }
        // Artikel des Auftrags + Artikel aus Personalverfuegbarkeit holen

        if (selectedAuftragId != null) {

            PersonalverfuegbarkeitDto[] personalverfuegbarkeitDtos = getPersonalFac()
                    .personalverfuegbarkeitFindByPersonalIId(personalDto.getIId());
            if (personalverfuegbarkeitDtos.length > 0) {
                tmArtikel.put(-2, " - - - Verf\u00FCgbarkeit - - - ");
            }
            for (int i = 0; i < personalverfuegbarkeitDtos.length; i++) {
                PersonalverfuegbarkeitDto v = personalverfuegbarkeitDtos[i];
                String artikel = getArtikelFac().artikelFindByPrimaryKey(v.getArtikelIId(), theclientDto)
                        .formatArtikelbezeichnung();
                tmArtikel.put(v.getArtikelIId(), artikel);
            }

            hmData.put("selectedauftrag", selectedAuftragId);

        }

        ParametermandantDto parameterDtoDefaultarbeitszeit = getParameterFac().getMandantparameter(mandant,
                ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_DEFAULT_ARBEITSZEITARTIKEL);

        if (parameterDtoDefaultarbeitszeit != null && parameterDtoDefaultarbeitszeit.getCWert() != null
                && !parameterDtoDefaultarbeitszeit.getCWert().trim().equals("")) {

            ArtikelDto artikelDtoDefaultArbeiztszeit = getArtikelFac()
                    .artikelFindByCNr(parameterDtoDefaultarbeitszeit.getCWert(), theclientDto);
            tmArtikel.put(-3, " - - - Default-Arbeitszeitartikel - - -");
            tmArtikel.put(artikelDtoDefaultArbeiztszeit.getIId(),
                    artikelDtoDefaultArbeiztszeit.formatArtikelbezeichnung());
        }

        hmData.put("artikel", tmArtikel);

        // Zeitbuchen
        String bucheauftrag = request.getParameter("bucheauftrag");
        String buchesondertaetigkeit = request.getParameter("buchesondertaetigkeit");

        // Zeit buchen
        ZeitdatenDto zeitdatenDto = new ZeitdatenDto();
        zeitdatenDto.setPersonalIId(personalDto.getIId());
        Timestamp tZeit = new Timestamp(System.currentTimeMillis());
        zeitdatenDto.setCWowurdegebucht("Quick-ZE " + request.getRemoteHost());
        String meldung = "";

        zeitdatenDto.setTZeit(tZeit);
        String bemerkung = request.getParameter("bemerkung");
        zeitdatenDto.setCBemerkungZuBelegart(bemerkung);

        if (bucheauftrag != null && bucheauftrag.length() > 0) {

            if (request.getParameter("artikel") != null) {

                Integer artikelId = new Integer(request.getParameter("artikel"));
                if (artikelId > 0) {

                    Integer auftragIId = new Integer(selectedAuftragId.trim());

                    String s = "Auf ";

                    if (kunde != null) {
                        PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(kunde, theclientDto);
                        s += partnerDto.formatFixName1Name2() + ", ";
                    }

                    if (belegart.equals(LocaleFac.BELEGART_AUFTRAG)) {
                        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("quickze.auftrag",
                                theclientDto.getMandant(), theclientDto.getLocUiAsString());

                        if (textDto != null) {
                            s += textDto.getCText() + " ";
                        } else {
                            s += "Auftrag ";
                        }

                        com.lp.server.auftrag.service.AuftragDto auftragDto = getAuftragFac()
                                .auftragFindByPrimaryKey(auftragIId);
                        s += auftragDto.getCNr();
                        if (auftragDto.getCBezProjektbezeichnung() != null) {
                            s += " " + auftragDto.getCBezProjektbezeichnung();
                        }

                        com.lp.server.auftrag.service.AuftragpositionDto[] auftragpositionDtos = getAuftragpositionFac()
                                .auftragpositionFindByAuftrag(auftragIId);
                        if (auftragpositionDtos.length > 0) {
                            zeitdatenDto.setIBelegartpositionid(auftragpositionDtos[0].getIId());
                        }
                    } else if (belegart.equals(LocaleFac.BELEGART_ANGEBOT)) {
                        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc("angb.angebot",
                                theclientDto.getMandant(), theclientDto.getLocUiAsString());

                        if (textDto != null) {
                            s += textDto.getCText() + " ";
                        } else {
                            s += "Angebot ";
                        }

                        com.lp.server.angebot.service.AngebotDto auftragDto = getAngebotFac()
                                .angebotFindByPrimaryKey(auftragIId, theclientDto);
                        s += auftragDto.getCNr();
                        if (auftragDto.getCBez() != null) {
                            s += " " + auftragDto.getCBez();
                        }

                    } else if (belegart.equals(LocaleFac.BELEGART_PROJEKT)) {
                        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc(
                                "lp.projekt.modulname", theclientDto.getMandant(),
                                theclientDto.getLocUiAsString());

                        if (textDto != null) {
                            s += textDto.getCText() + " ";
                        } else {
                            s += "Projekt ";
                        }

                        com.lp.server.projekt.service.ProjektDto auftragDto = getProjektFac()
                                .projektFindByPrimaryKey(auftragIId);
                        s += auftragDto.getCNr();
                        if (auftragDto.getCTitel() != null) {
                            s += " " + auftragDto.getCTitel();
                        }

                    } else if (belegart.equals(LocaleFac.BELEGART_LOS)) {
                        textDto = getSystemMultilanguageFac().textFindByPrimaryKeyOhneExc(
                                "fert.tab.unten.los.title", theclientDto.getMandant(),
                                theclientDto.getLocUiAsString());

                        if (textDto != null) {
                            s += textDto.getCText() + " ";
                        } else {
                            s += "Los ";
                        }

                        LosDto auftragDto = getFertigungFac().losFindByPrimaryKey(auftragIId);
                        s += auftragDto.getCNr();
                        if (auftragDto.getCProjekt() != null) {
                            s += " " + auftragDto.getCProjekt();
                        }

                        LossollarbeitsplanDto[] dtos = getFertigungFac()
                                .lossollarbeitsplanFindByLosIIdArtikelIIdTaetigkeit(auftragIId, artikelId);
                        if (dtos.length > 0) {
                            zeitdatenDto.setIBelegartpositionid(dtos[0].getIId());
                        }

                    }
                    zeitdatenDto.setPersonalIId(personalDto.getIId());
                    zeitdatenDto.setCBelegartnr(belegart);
                    zeitdatenDto.setIBelegartid(auftragIId);
                    zeitdatenDto.setArtikelIId(artikelId);

                    ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(artikelId, theclientDto);

                    meldung += s + ", " + artikelDto.formatArtikelbezeichnung();

                    getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false, theclientDto);
                    meldung += " um " + Helper.formatTime(tZeit, localeLogon) + " gebucht.";
                    getTheClient(request, response).setSMsg(meldung);
                }
            } else {

                getTheClient(request, response).setSMsg("Keine Auftragsposition ausgew\u00E4hlt");
            }
        } else if (buchesondertaetigkeit != null && buchesondertaetigkeit.length() > 0) {
            String zusatz = request.getParameter("zusatz");

            if (zusatz != null && zusatz.length() > 0) {
                // Zeit ist immer jetzt
                Calendar c = Calendar.getInstance();
                c.setTimeInMillis(zeitdatenDto.getTZeit().getTime());
                ZeitdatenDto[] letzeBuchungen = getZeiterfassungsFac()
                        .zeitdatenFindZeitdatenEinesTagesUndEinerPersonOnheBelegzeiten(
                                zeitdatenDto.getPersonalIId(), Helper.cutTimestamp(zeitdatenDto.getTZeit()),
                                zeitdatenDto.getTZeit());
                Integer taetigkeitIId_Kommt = getZeiterfassungsFac()
                        .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_KOMMT, theclientDto).getIId();
                Integer taetigkeitIId_Unter = getZeiterfassungsFac()
                        .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_UNTER, theclientDto).getIId();
                Integer taetigkeitIId_Geht = getZeiterfassungsFac()
                        .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_GEHT, theclientDto).getIId();
                if (zusatz.equals("spezialkommt")) {

                    if (letzeBuchungen.length == 0) {
                        // Zuerst Kommt und dann UNTER
                        ZeitdatenDto dtoKommt = new ZeitdatenDto();
                        dtoKommt.setTaetigkeitIId(taetigkeitIId_Kommt);
                        dtoKommt.setPersonalIId(zeitdatenDto.getPersonalIId());
                        dtoKommt.setCWowurdegebucht("Spezial-Kommt");
                        // Zeit 100 MS vorher
                        dtoKommt.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime()));
                        getZeiterfassungsFac().createZeitdaten(dtoKommt, false, false, false, theclientDto);
                        // Taetigkeit GEHT Buchen
                        ZeitdatenDto dtoUnter = new ZeitdatenDto();
                        dtoUnter.setTaetigkeitIId(taetigkeitIId_Unter);
                        dtoUnter.setPersonalIId(zeitdatenDto.getPersonalIId());
                        dtoUnter.setCWowurdegebucht("Spezial-Kommt");
                        // Zeit 100 MS nachher
                        dtoUnter.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime() + 96));
                        getZeiterfassungsFac().createZeitdaten(dtoUnter, false, false, false, theclientDto);
                    } else if (letzeBuchungen.length == 1) {
                        Integer letztetaetigkeit = letzeBuchungen[0].getTaetigkeitIId();
                        // Wenn nur Kommt, dann Unter buchen
                        if (taetigkeitIId_Kommt.equals(letztetaetigkeit)) {
                            // Taetigkeit UNTER Buchen
                            ZeitdatenDto dtoUnter = new ZeitdatenDto();
                            dtoUnter.setTaetigkeitIId(taetigkeitIId_Unter);
                            dtoUnter.setPersonalIId(zeitdatenDto.getPersonalIId());
                            dtoUnter.setCWowurdegebucht("Spezial-Kommt");
                            dtoUnter.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime()));
                            getZeiterfassungsFac().createZeitdaten(dtoUnter, false, false, false, theclientDto);

                        }
                    } else if (letzeBuchungen.length > 1) {
                        Integer letztetaetigkeit = letzeBuchungen[letzeBuchungen.length - 1].getTaetigkeitIId();
                        if (taetigkeitIId_Kommt.equals(letztetaetigkeit)) {
                            // Taetigkeit UNTER Buchen
                            ZeitdatenDto dtoUnter = new ZeitdatenDto();
                            dtoUnter.setTaetigkeitIId(taetigkeitIId_Unter);
                            dtoUnter.setPersonalIId(zeitdatenDto.getPersonalIId());
                            dtoUnter.setCWowurdegebucht("Spezial-Kommt");
                            dtoUnter.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime()));
                            getZeiterfassungsFac().createZeitdaten(dtoUnter, false, false, false, theclientDto);

                        } else {

                            // Wenn letzte Taetigkeit ein Geht ist wird
                            // Kommt
                            // und Unter gebucht
                            if (!taetigkeitIId_Geht.equals(letztetaetigkeit)) {

                                int iSondertaetigkeitenHintereinander = 1;
                                for (int i = letzeBuchungen.length - 2; i >= 0; i--) {
                                    ZeitdatenDto dto = letzeBuchungen[i];
                                    if (letztetaetigkeit.equals(dto.getTaetigkeitIId())) {
                                        iSondertaetigkeitenHintereinander++;
                                    } else {
                                        break;
                                    }
                                    letztetaetigkeit = dto.getTaetigkeitIId();
                                }

                                if (iSondertaetigkeitenHintereinander % 2 == 0) {
                                    // Taetigkeit UNTER Buchen
                                    ZeitdatenDto dtoUnter = new ZeitdatenDto();
                                    dtoUnter.setTaetigkeitIId(taetigkeitIId_Unter);
                                    dtoUnter.setPersonalIId(zeitdatenDto.getPersonalIId());
                                    dtoUnter.setCWowurdegebucht("Spezial-Geht");
                                    dtoUnter.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime()));
                                    getZeiterfassungsFac().createZeitdaten(dtoUnter, false, false, false,
                                            theclientDto);

                                    /**
                                     * @todo 100ms vorher Projekt-ENDE
                                     *       buchen
                                     */
                                }
                            } else {
                                // Taetigkeit KOMMT Buchen
                                ZeitdatenDto dtoKommt = new ZeitdatenDto();
                                dtoKommt.setTaetigkeitIId(taetigkeitIId_Kommt);
                                dtoKommt.setPersonalIId(zeitdatenDto.getPersonalIId());
                                dtoKommt.setCWowurdegebucht("Spezial-Kommt");
                                dtoKommt.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime()));
                                getZeiterfassungsFac().createZeitdaten(dtoKommt, false, false, false,
                                        theclientDto);
                                // Taetigkeit UNTER Buchen
                                ZeitdatenDto dtoUnter = new ZeitdatenDto();
                                dtoUnter.setTaetigkeitIId(taetigkeitIId_Unter);
                                dtoUnter.setPersonalIId(zeitdatenDto.getPersonalIId());
                                dtoUnter.setCWowurdegebucht("Spezial-Kommt");
                                // Zeit 100 MS nachher
                                dtoUnter.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime() + 96));
                                getZeiterfassungsFac().createZeitdaten(dtoUnter, false, false, false,
                                        theclientDto);

                            }
                        }
                    }

                } else if (zusatz.equals("spezialgeht")) {
                    if (letzeBuchungen.length > 1) {

                        Integer letztetaetigkeit = letzeBuchungen[letzeBuchungen.length - 1].getTaetigkeitIId();
                        // Wenn letzte Taetigkeit kein geht ist, sonst wird
                        // geht verschmissen
                        if (!taetigkeitIId_Geht.equals(letztetaetigkeit)) {

                            int iSondertaetigkeitenHintereinander = 1;
                            for (int i = letzeBuchungen.length - 2; i >= 0; i--) {
                                ZeitdatenDto dto = letzeBuchungen[i];
                                if (letztetaetigkeit.equals(dto.getTaetigkeitIId())) {
                                    iSondertaetigkeitenHintereinander++;
                                } else {
                                    break;
                                }
                                letztetaetigkeit = dto.getTaetigkeitIId();
                            }

                            if (iSondertaetigkeitenHintereinander % 2 == 1) {
                                // Sondertaetigkeit Ende Buchen
                                ZeitdatenDto dtoSonderEnde = new ZeitdatenDto();
                                dtoSonderEnde.setTaetigkeitIId(letztetaetigkeit);
                                dtoSonderEnde.setPersonalIId(zeitdatenDto.getPersonalIId());
                                dtoSonderEnde.setCWowurdegebucht("Spezial-Geht");
                                // Zeit 100 MS vorher
                                dtoSonderEnde.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime() - 96));
                                getZeiterfassungsFac().createZeitdaten(dtoSonderEnde, false, false, false,
                                        theclientDto);
                                // Taetigkeit GEHT Buchen
                                ZeitdatenDto dtoUnter = new ZeitdatenDto();
                                dtoUnter.setTaetigkeitIId(taetigkeitIId_Geht);
                                dtoUnter.setPersonalIId(zeitdatenDto.getPersonalIId());
                                dtoUnter.setCWowurdegebucht("Spezial-Geht");
                                // Zeit 100 MS vorher
                                dtoUnter.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime()));
                                getZeiterfassungsFac().createZeitdaten(dtoUnter, false, false, false,
                                        theclientDto);

                            } else {
                                // Taetigkeit GEHT Buchen
                                ZeitdatenDto dtoUnter = new ZeitdatenDto();
                                dtoUnter.setTaetigkeitIId(taetigkeitIId_Geht);
                                dtoUnter.setPersonalIId(zeitdatenDto.getPersonalIId());
                                dtoUnter.setCWowurdegebucht("Spezial-Geht");
                                // Zeit 100 MS vorher
                                dtoUnter.setTZeit(new Timestamp(zeitdatenDto.getTZeit().getTime()));
                                getZeiterfassungsFac().createZeitdaten(dtoUnter, false, false, false,
                                        theclientDto);

                            }
                        }

                    }

                } else {
                    response.sendError(HttpServletResponse.SC_BAD_REQUEST, "zusatz '" + zusatz + "' unbekannt");
                }
                setSJSPNext("mecs.jsp");
                return getSJSPNext();
            } else {

                if (request.getParameter("taetigkeit") != null) {

                    Integer taetigkeitId = new Integer(request.getParameter("taetigkeit"));
                    zeitdatenDto.setTaetigkeitIId(taetigkeitId);

                    TaetigkeitDto dto = getZeiterfassungsFac().taetigkeitFindByPrimaryKey(taetigkeitId,
                            theclientDto);
                    meldung += dto.getBezeichnung();

                    getZeiterfassungsFac().createZeitdaten(zeitdatenDto, true, true, false, theclientDto);
                    meldung += " um " + Helper.formatTime(tZeit, localeLogon) + " gebucht.";
                    getTheClient(request, response).setSMsg(meldung);
                } else {
                    getTheClient(request, response).setSMsg("Keine T\u00E4tigkeit ausgew\u00E4hlt");
                }
            }
        }
        getTheClient(request, response).setData(hmData);
        // AD+CK logout wegen usercount
        synchronized (mutex) { // PJ 15986
            getLogonFac().logout(theclientDto);
        }
    } else if (command.equals(TheApp.CMD_ZU_MECS_TERMINAL)) {
        // Personalstamm holen

        String master = request.getParameter("master");

        try {
            ZutrittscontrollerDto zutrittscontrollerDto = getZutrittscontrollerFac()
                    .zutrittscontrollerFindByCNr(master);
            ZutrittsobjektDto[] zutrittsobjektDtos = getZutrittscontrollerFac()
                    .zutrittsobjektFindByZutrittscontrollerIId(zutrittscontrollerDto.getIId());

            StringBuffer objekte = new StringBuffer();

            for (int i = 0; i < zutrittsobjektDtos.length; i++) {
                objekte.append(Helper.fitString2Length(zutrittsobjektDtos[i].getCNr(), 6, ' ')); // terminal-
                // id
                objekte.append(Helper.fitString2Length(zutrittsobjektDtos[i].getCAdresse(), 100, ' ')); // adresse
                objekte.append("\r\n");
            }
            myLogger.info(command + ":" + new String(objekte));

            getTheClient(request, response).setSMsg(new String(objekte));
        }

        catch (RemoteException ex5) {
            if (ex5.getCause() instanceof EJBExceptionLP) {
                EJBExceptionLP lpex = (EJBExceptionLP) ex5.getCause();
                if (lpex.getCode() == EJBExceptionLP.FEHLER_BEI_FIND) {
                    myLogger.error("Zutrittscontroller '" + master + "' nicht angelegt", ex5);
                } else {
                    myLogger.error(ex5.getMessage(), ex5);
                }
            }

        }
    } else if (command.equals(TheApp.CMD_ZU_MECS_RELAIS)) {
        // Personalstamm holen

        String termid = request.getParameter("termid");
        if (termid == null || termid.length() == 0) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                    "Es ist der Parameter termid='LanPortName' erforderlich");
            return null;
        }
        try {
            ZutrittsobjektDto zutrittsobjektDto = getZutrittscontrollerFac().zutrittsobjektFindByCNr(termid);

            StringBuffer objekte = new StringBuffer();

            objekte.append("10"); // readerid
            objekte.append("0"); // port
            objekte.append(zutrittsobjektDto.getCRelais()); // relais
            String oeffnungszeit = zutrittsobjektDto.getFOeffnungszeit().toString();
            oeffnungszeit = oeffnungszeit.replaceAll(",", ".");
            objekte.append(Helper.fitString2LengthAlignRight(oeffnungszeit, 4, ' ')); // oeffnungszeit
            objekte.append(zutrittsobjektDto.getZutrittsleserCNr().trim()); // readerid
            objekte.append("\r\n");
            myLogger.info(command + ":" + new String(objekte));

            getTheClient(request, response).setSMsg(new String(objekte));
        } catch (EJBExceptionLP ex4) {

            if (ex4.getCode() == EJBExceptionLP.FEHLER_BEI_FIND) {
                response.sendError(HttpServletResponse.SC_NOT_FOUND,
                        "Zutrittsobjekt '" + termid + "' nicht angelegt");
                return null;
            } else {
                ex4.printStackTrace();
                myLogger.error(ex4.getMessage(), ex4);
            }

        }
    } else if (command.equals(TheApp.CMD_ZU_MECS_ZUTRITT)) {
        String termid = request.getParameter("termid");
        try {
            ZutrittsobjektDto dto = getZutrittscontrollerFac().zutrittsobjektFindByCNr(termid);

            String s = getZutrittscontrollerFac().getZutrittsdatenFuerEinObjektFuerMecs(dto.getIId(),
                    theclientDto);
            myLogger.info(command + ":" + new String(s));

            getTheClient(request, response).setSMsg(new String(s));
        } catch (EJBExceptionLP ex4) {
            if (ex4.getCode() == EJBExceptionLP.FEHLER_BEI_FIND) {
                myLogger.error("Zutrittsobjekt '" + termid + "' nicht angelegt", ex4);
                response.sendError(HttpServletResponse.SC_NOT_FOUND,
                        "Zutrittsobjekt '" + termid + "' nicht angelegt");

            } else {
                myLogger.error(ex4.getMessage(), ex4);
                response.sendError(HttpServletResponse.SC_NOT_FOUND, ex4.getMessage());
            }

        }

    } else if (command.equals(TheApp.CMD_ZU_MECS_AUSWEISE_ZUTRITT)) {
        PersonalzutrittsklasseDto[] dtos = getZutrittscontrollerFac().personalzutrittsklassenFindByTGueltigab(
                new Timestamp(System.currentTimeMillis()), theclientDto);

        ArrayList<StringBuffer> alDaten = new ArrayList<StringBuffer>();

        for (int i = 0; i < dtos.length; i++) {
            StringBuffer sb = new StringBuffer();
            sb.append("10");

            // Hole personalDto
            PersonalDto personalDto = getPersonalFac().personalFindByPrimaryKeySmall(dtos[i].getPersonalIId());

            sb.append(Helper.fitString2Length(personalDto.getCAusweis(), 20, ' '));
            sb.append(Helper.fitString2Length(personalDto.getCPersonalnr().toString(), 10, ' '));
            sb.append(Helper.fitString2Length("", 24, ' '));

            // Hole Zutrittsklasse
            ZutrittsklasseDto zutrittsklasseDto = getZutrittscontrollerFac()
                    .zutrittsklasseFindByPrimaryKey(dtos[i].getZutrittsklasseIId());
            sb.append(Helper.fitString2Length(zutrittsklasseDto.getCNr(), 3, ' '));
            alDaten.add(sb);
        }

        // Besucherausweise
        String[] ausweise = getZutrittscontrollerFac()
                .zutrittonlinecheckAusweiseFindByTGueltigab(new Timestamp(System.currentTimeMillis()));

        for (int i = 0; i < ausweise.length; i++) {
            StringBuffer sb = new StringBuffer();
            sb.append("10");
            sb.append(Helper.fitString2Length(ausweise[i], 20, ' '));
            sb.append(Helper.fitString2Length("", 10, ' '));
            sb.append(Helper.fitString2Length("", 24, ' '));
            sb.append(Helper.fitString2Length(ZutrittscontrollerFac.ZUTRITTSKLASSE_ONLINECHECK, 3, ' '));
            alDaten.add(sb);
        }

        // sortieren
        String datenGesamt = "";
        for (int i = alDaten.size() - 1; i > 0; --i) {
            for (int j = 0; j < i; ++j) {
                if ((new String(alDaten.get(j))).compareTo(new String(alDaten.get(j + 1))) > 0) {
                    StringBuffer lagerbewegungDtoTemp = alDaten.get(j);
                    alDaten.set(j, alDaten.get(j + 1));
                    alDaten.set(j + 1, lagerbewegungDtoTemp);
                }
            }
        }

        for (int i = 0; i < alDaten.size(); i++) {

            StringBuffer sbTemp = alDaten.get(i);
            sbTemp.append("\r\n");
            datenGesamt += new String(sbTemp);
        }

        myLogger.info(command + ":" + datenGesamt);
        getTheClient(request, response).setSMsg(datenGesamt);
    } else if (command.startsWith(TheApp.CMD_ZU_MECS_ZUTRITT_ONLINE_CHECK)) {
        String termid = request.getParameter("termid");

        String card = request.getParameter("card");
        String pin = request.getParameter("pin");

        try {
            ZutrittsobjektDto dto = getZutrittscontrollerFac().zutrittsobjektFindByCNr(termid);
            boolean b = getZutrittscontrollerFac().onlineCheck(card, pin,
                    new Timestamp(System.currentTimeMillis()), dto.getIId());
            if (b == true) {
                myLogger.info(command + ": ZUTRITT ERLAUBT");
                getTheClient(request, response).setSMsg("A");

            } else {
                myLogger.info(command + ": ZUTRITT VERWEIGERT");
                getTheClient(request, response).setSMsg("Z");
            }
        } catch (EJBExceptionLP ex4) {
            if (ex4.getCause() instanceof EJBExceptionLP) {
                EJBExceptionLP lpex = (EJBExceptionLP) ex4.getCause();
                if (lpex.getCode() == EJBExceptionLP.FEHLER_BEI_FIND) {

                    response.sendError(HttpServletResponse.SC_NOT_FOUND,
                            "Zutrittsobjekt '" + termid + "' nicht angelegt");
                    myLogger.error("Zutrittsobjekt '" + termid + "' nicht angelegt", ex4);
                } else {
                    myLogger.error(ex4.getMessage(), ex4);
                    response.sendError(HttpServletResponse.SC_NOT_FOUND, ex4.getMessage());
                }
            }
        }

    } else if (command.startsWith(TheApp.CMD_ZU_MECS_ZUTRITT_EVENTS)) {
        String termid = request.getParameter("termid");

        if (termid == null || termid.length() == 0) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                    "Es ist der Parameter termid='LanPortName' erforderlich");
            return null;
        }

        ZutrittsobjektDto dto = null;
        try {
            dto = getZutrittscontrollerFac().zutrittsobjektFindByCNr(termid);
        } catch (EJBExceptionLP e) {
            if (e.getCode() == EJBExceptionLP.FEHLER_BEI_FIND) {
                response.sendError(HttpServletResponse.SC_NOT_FOUND,
                        "Zutrittsobjekt '" + termid + "' nicht angelegt");
                return null;
            } else {
                e.printStackTrace();
                response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                        "Unerwarteter Fehler aufgetreten.");
                return null;
            }
        }

        String s = getZutrittscontrollerFac().getZutrittsEventsFuerMecs(dto.getIId(), theclientDto);
        myLogger.info(command + ":" + s);
        getTheClient(request, response).setSMsg(s);

    } else if (command.startsWith(TheApp.CMD_ZU_MECS_MAXTRANSNR)) {
        getTheClient(request, response).setSMsg("999");
    } else if (command.startsWith(TheApp.CMD_ZU_MECS_LOG)) {

        String record = command.substring(17);
        ZutrittslogDto dto = new ZutrittslogDto();

        Calendar c = Calendar.getInstance();
        String zeitpunkt = record.substring(5, 19);
        int iJahr = new Integer(zeitpunkt.substring(0, 4));
        int iMonat = new Integer(zeitpunkt.substring(4, 6)) - 1;
        int iTag = new Integer(zeitpunkt.substring(6, 8));
        int iStunden = new Integer(zeitpunkt.substring(8, 10));
        int iMinuten = new Integer(zeitpunkt.substring(10, 12));
        int iSekunden = new Integer(zeitpunkt.substring(12, 14));

        c.set(iJahr, iMonat, iTag, iStunden, iMinuten, iSekunden);
        dto.setTZeitpunkt(new Timestamp(c.getTimeInMillis()));
        String personalnr = record.substring(19, 24);
        String erlaubt = record.substring(24, 27);
        String objekt = record.substring(46, 67).trim();
        String ausweis = record.substring(106, 135).trim();
        String event = record.substring(126, 137).trim();

        PersonalDto personalDto = getPersonalFac().personalFindByCAusweis(ausweis);

        if (personalDto != null || event.equals("PINONLINE") || personalnr.equals("?????")
                || personalnr.equals("     ")) {
            if (personalDto != null) {
                dto.setCPerson(
                        getPartnerFac().partnerFindByPrimaryKey(personalDto.getPartnerIId(), theclientDto)
                                .formatFixAnredeTitelName2Name1());
                dto.setMandantCNr(personalDto.getMandantCNr());
            } else if (personalnr.equals("     ")) {
                dto.setCPerson("Besucher");
                dto.setMandantCNr(mandant);
            } else if (event != null && event.equals("PINONLINE")) {
                dto.setCPerson("Tempor\u00E4rer Pin-Code");
                dto.setMandantCNr(mandant);
            } else {
                dto.setCPerson("Unbekannt");
                dto.setMandantCNr(mandant);
            }

            if (erlaubt.equals("ZZ1")) {
                dto.setBErlaubt(Helper.boolean2Short(true));
            } else {
                dto.setBErlaubt(Helper.boolean2Short(false));
            }

            dto.setCAusweis(ausweis);
            dto.setCZutrittscontroller(null);

            try {
                ZutrittsobjektDto zutrittsobjektDto = getZutrittscontrollerFac()
                        .zutrittsobjektFindByCNr(objekt);

                dto.setCZutrittsobjekt(
                        zutrittsobjektDto.getBezeichnung() + "-" + zutrittsobjektDto.getCAdresse());
                dto.setCZutrittscontroller(getZutrittscontrollerFac()
                        .zutrittscontrollerFindByPrimaryKey(zutrittsobjektDto.getZutrittscontrollerIId())
                        .getCNr());
                dto.setMandantCNrObjekt(zutrittsobjektDto.getMandantCNr());
            } catch (RemoteException ex6) {
                dto.setCZutrittsobjekt("Zutrittsobjekt unbekannt");
            }

            getZutrittscontrollerFac().createZutrittslog(dto);
        }

        myLogger.info(command);

    } else if (command.startsWith(TheApp.CMD_ZU_MECS_TEMPLATES)) {

        String sAendern = request.getParameter("changedsince");

        PersonalfingerDto[] personalfingerDtos = null;
        if (sAendern == null) {
            personalfingerDtos = getZutrittscontrollerFac().personalfingerFindAll();

        } else {

            Calendar c = Calendar.getInstance();
            int iJahr = new Integer(sAendern.substring(0, 4));
            int iMonat = new Integer(sAendern.substring(4, 6)) - 1;
            int iTag = new Integer(sAendern.substring(6, 8));
            int iStunden = new Integer(sAendern.substring(8, 10));
            int iMinuten = new Integer(sAendern.substring(10, 12));

            c.set(iJahr, iMonat, iTag, iStunden, iMinuten, 0);
            c.set(Calendar.MILLISECOND, 0);

            personalfingerDtos = getZutrittscontrollerFac()
                    .personalfingerFindByTAendern(new java.sql.Timestamp(c.getTimeInMillis()), theclientDto);
        }
        StringBuffer sb = new StringBuffer();
        // Zuerts alle loeschen
        sb.append(Helper.fitString2LengthAlignRight("0", 5, ' '));
        sb.append(Helper.fitString2LengthAlignRight("0", 2, ' '));
        sb.append(Helper.fitString2Length("X", 512, 'X'));
        StringBuffer zeit = new StringBuffer();
        Calendar cAendern = Calendar.getInstance();
        zeit.append(Helper.fitString2Length(cAendern.get(Calendar.YEAR) + "", 4, '0'));
        zeit.append(Helper.fitString2Length((cAendern.get(Calendar.MONTH) + 1) + "", 2, '0'));
        zeit.append(Helper.fitString2Length(cAendern.get(Calendar.DAY_OF_MONTH) + "", 2, '0'));
        zeit.append(Helper.fitString2Length(cAendern.get(Calendar.HOUR_OF_DAY) + "", 2, '0'));
        zeit.append(Helper.fitString2Length(cAendern.get(Calendar.MINUTE) + "", 2, '0'));

        sb.append(zeit);
        sb.append("\r\n");

        for (int i = 0; i < personalfingerDtos.length; i++) {
            PersonalfingerDto personalfingerDto = personalfingerDtos[i];
            sb.append(Helper.fitString2LengthAlignRight(personalfingerDto.getIId() + "", 5, ' '));
            sb.append(Helper.fitString2LengthAlignRight("1", 2, ' '));
            String templateBase64 = new String(
                    org.apache.commons.codec.binary.Base64.encodeBase64(personalfingerDto.getOTemplate1()));
            sb.append(Helper.fitString2Length(templateBase64, 512, ' '));

            cAendern = Calendar.getInstance();
            cAendern.setTimeInMillis(personalfingerDto.getTAendern().getTime());
            zeit = new StringBuffer();
            zeit.append(Helper.fitString2Length(cAendern.get(Calendar.YEAR) + "", 4, '0'));
            zeit.append(Helper.fitString2Length((cAendern.get(Calendar.MONTH) + 1) + "", 2, '0'));
            zeit.append(Helper.fitString2Length(cAendern.get(Calendar.DAY_OF_MONTH) + "", 2, '0'));
            zeit.append(Helper.fitString2Length(cAendern.get(Calendar.HOUR_OF_DAY) + "", 2, '0'));
            zeit.append(Helper.fitString2Length(cAendern.get(Calendar.MINUTE) + "", 2, '0'));

            sb.append(zeit);
            sb.append("\r\n");

            if (personalfingerDto.getOTemplate2() != null) {
                sb.append(Helper.fitString2LengthAlignRight(personalfingerDto.getIId() + "", 5, ' '));
                sb.append(Helper.fitString2LengthAlignRight("2", 2, ' '));
                templateBase64 = new String(
                        org.apache.commons.codec.binary.Base64.encodeBase64(personalfingerDto.getOTemplate2()));
                sb.append(Helper.fitString2Length(templateBase64, 512, ' '));
                sb.append(zeit);
                if (i == personalfingerDtos.length - 1) {
                    // sb.append("\r");
                } else {
                    sb.append("\r\n");
                }
            }

        }
        getTheClient(request, response).setSMsg(new String(sb));

    }

    return getSJSPNext();
}

From source file:com.lp.server.fertigung.ejbfac.FertigungFacBean.java

@TransactionTimeout(1000)
public void removeLosablieferung(Object[] loablieferungIIds, TheClientDto theClientDto) {

    Losablieferung ersteAblieferung = em.find(Losablieferung.class, (Integer) loablieferungIIds[0]);

    // losstatus pruefen
    LosDto losDto = losFindByPrimaryKey(ersteAblieferung.getLosIId());
    if (losDto.getStatusCNr().equals(FertigungFac.STATUS_STORNIERT)) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_STORNIERT, "");
    } else if (losDto.getStatusCNr().equals(FertigungFac.STATUS_ANGELEGT)) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_NOCH_NICHT_AUSGEGEBEN, "");
    } else if (losDto.getStatusCNr().equals(FertigungFac.STATUS_GESTOPPT)) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_GESTOPPT, "");
    }//from w  ww .  j  a va2s . c o m

    for (int i = 0; i < loablieferungIIds.length; i++) {

        Integer losablieferungIId = (Integer) loablieferungIIds[i];

        Losablieferung toRemove = em.find(Losablieferung.class, losablieferungIId);

        try {
            em.remove(toRemove);
            em.flush();
        } catch (EntityExistsException er) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_LOESCHEN, er);
        }

        // Lagerbuchung, aber nicht fuer Materiallisten
        if (losDto.getStuecklisteIId() != null) {

            getLagerFac().loescheKompletteLagerbewegungEinerBelgposition(LocaleFac.BELEGART_LOSABLIEFERUNG,
                    losablieferungIId, theClientDto);
        }

    }

    // neuer losstatus
    // try {
    LosablieferungDto[] la = losablieferungFindByLosIId(losDto.getIId(), true, theClientDto);

    Los los = em.find(Los.class, losDto.getIId());
    if (los == null) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY, "");
    }

    String alterStatus = los.getStatusCNr();

    if (la.length == 0) {
        los.setStatusCNr(FertigungFac.STATUS_IN_PRODUKTION);
        los.setPersonalIIdErledigt(null);
        los.setTErledigt(null);
    } else {
        los.setStatusCNr(FertigungFac.STATUS_TEILERLEDIGT);
        los.setPersonalIIdErledigt(null);
        los.setTErledigt(null);
    }
    // CK: Wenn Status ERLEDIGT zurueckgenommen wurde, dann
    // muessen
    // die Fehlmengen wiederhergestellt werden

    try {

        if (alterStatus.equals(FertigungFac.STATUS_ERLEDIGT)) {
            LossollmaterialDto[] lossollmaterialDtos = lossollmaterialFindByLosIId(los.getIId());

            for (int k = 0; k < lossollmaterialDtos.length; k++) {
                LossollmaterialDto lossollmaterialDto = lossollmaterialDtos[k];
                if (!Helper.short2Boolean(lossollmaterialDto.getBNachtraeglich())) {
                    // Fehlmengen aktualisieren
                    getFehlmengeFac().aktualisiereFehlmenge(LocaleFac.BELEGART_LOS, lossollmaterialDto.getIId(),
                            false, theClientDto);
                }
            }
        }
    }
    // catch (RemoveException ex) {
    // throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_LOESCHEN,
    // ex);
    // }
    catch (RemoteException ex) {
        // falls die zugebuchte menge schon verbraucht wurde, muss ich
        // das
        // extra behandeln
        Throwable eCause = ex.getCause();
        if (eCause instanceof EJBExceptionLP) {
            EJBExceptionLP e = (EJBExceptionLP) eCause;
            if (e.getCode() == EJBExceptionLP.FEHLER_MENGENREDUZIERUNG_NICHT_MOEGLICH) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER_ZUGEBUCHTES_MATERIAL_BEREITS_VOM_LAGER_ENTNOMMEN,
                        new Exception("FEHLER_FERTIGUNG_ABLIEFERUNG_BEREITS_VOM_LAGER_ENTNOMMEN"));
            }
        }
        throwEJBExceptionLPRespectOld(ex);
    }

}

From source file:org.apache.jmeter.samplers.DiskStoreSampleSender.java

@Override
public void testEnded(String host) {
    log.info("Test Ended on " + host);
    singleExecutor.submit(new Runnable() {
        @Override/* w  w w .  java 2s  .  c o m*/
        public void run() {
            try {
                oos.close(); // ensure output is flushed
            } catch (IOException e) {
                log.error("Failed to close data file ", e);
            }
        }
    });
    singleExecutor.shutdown(); // finish processing samples
    try {
        if (!singleExecutor.awaitTermination(3, TimeUnit.SECONDS)) {
            log.error("Executor did not terminate in a timely fashion");
        }
    } catch (InterruptedException e1) {
        log.error("Executor did not terminate in a timely fashion", e1);
    }
    ObjectInputStream ois = null;
    try {
        ois = new ObjectInputStream(new FileInputStream(temporaryFile));
        Object obj = null;
        while ((obj = ois.readObject()) != null) {
            if (obj instanceof SampleEvent) {
                try {
                    listener.sampleOccurred((SampleEvent) obj);
                } catch (RemoteException err) {
                    if (err.getCause() instanceof java.net.ConnectException) {
                        throw new JMeterError("Could not return sample", err);
                    }
                    log.error("returning sample", err);
                }
            } else {
                log.error("Unexpected object type found in data file " + obj.getClass().getName());
            }
        }
    } catch (EOFException err) {
        // expected
    } catch (IOException | ClassNotFoundException err) {
        log.error("returning sample", err);
    } finally {
        try {
            listener.testEnded(host);
        } catch (RemoteException e) {
            log.error("returning sample", e);
        }
        IOUtils.closeQuietly(ois);
        if (!temporaryFile.delete()) {
            log.warn("Could not delete file:" + temporaryFile.getAbsolutePath());
        }
    }
}

From source file:org.apache.manifoldcf.confluence.ConfluenceSOAPServiceImpl.java

@Override
public boolean close() throws ManifoldCFException {
    try {/* ww  w .  j a v  a2  s .  co  m*/
        return fConfluenceSoapService.logout(fToken);
    } catch (RemoteException e) {
        Logging.connectors.error("Error while closing", e);
        throw new ManifoldCFException(e.getCause());
    }

}