Package er.bugtracker

Source Code of er.bugtracker.DirectAction$EntranceActionCallback

/*
* Copyright (C) NetStruxr, Inc. All rights reserved.
*
* This software is published under the terms of the NetStruxr
* Public Software License version 0.5, a copy of which has been
* included with this distribution in the LICENSE.NPL file.  */

package er.bugtracker;

import java.util.Enumeration;

import com.webobjects.appserver.WOActionResults;
import com.webobjects.appserver.WOApplication;
import com.webobjects.appserver.WOComponent;
import com.webobjects.appserver.WOCookie;
import com.webobjects.appserver.WORedirect;
import com.webobjects.appserver.WORequest;
import com.webobjects.appserver.WOResponse;
import com.webobjects.directtoweb.D2W;
import com.webobjects.directtoweb.ErrorPageInterface;
import com.webobjects.eoaccess.EOModelGroup;
import com.webobjects.eoaccess.EOUtilities;
import com.webobjects.eocontrol.EOEditingContext;
import com.webobjects.foundation.NSMutableArray;
import com.webobjects.foundation.NSTimestamp;

import er.calendar.ERPublishCalendarPage;
import er.calendar.ERSimpleEvent;
import er.corebusinesslogic.ERCoreBusinessLogic;
import er.directtoweb.ERD2WDirectAction;
import er.extensions.crypting.ERXCrypto;
import er.extensions.eof.ERXEC;
import er.extensions.foundation.ERXUtilities;

public class DirectAction extends ERD2WDirectAction {

    public DirectAction(WORequest aRequest) {
        super(aRequest);
    }

    public WOActionResults calendarAction() {
        EOEditingContext ec = ERXEC.newEditingContext();
        ec.lock();
        try {
            ERPublishCalendarPage calendar = (ERPublishCalendarPage) pageWithName("ERPublishCalendarPage");
            calendar.setCalendarName("Release Map");
            NSMutableArray releases = new NSMutableArray();
            for (Enumeration e = Release.clazz.allObjects(ec).objectEnumerator(); e.hasMoreElements();) {
                final Release element = (Release) e.nextElement();
                ERSimpleEvent event = new ERSimpleEvent(element.dateDue(), null, element.name(), element.primaryKey());
                releases.addObject(event);
            }
            calendar.addEventsFromArray(releases);
            return calendar;
        } finally {
            ec.unlock();
        }
    }
    public WOComponent pingAction() {
        WOComponent result = null;
        EOEditingContext ec = ERXEC.newEditingContext();
        ec.lock();
        try {
            //EOUtilities.rawRowsForSQL(ec, (String) EOModelGroup.defaultGroup().modelNames().lastObject(), "select count(*) from PRIORITY", null);
            People user = People.clazz.anyUser(ec);
            ERCoreBusinessLogic.setActor(user);
            Bug bug = Bug.clazz.createAndInsertObject(ec);
            bug.setSubject("Test");
     //       bug.setTextDescription("Test");
            bug.setComponent(Component.clazz.allObjects(ec).lastObject());
            ec.saveChanges();
            bug.setSubject("Test");
            ec.saveChanges();
            bug.setSubject("Test1");
            bug.setOwner(People.clazz.anyUser(ec));
            ec.saveChanges();
            ec.deleteObject(bug);
            ec.saveChanges();
            result = pageWithName("ERXSuccess");
        } catch (Exception e) {
            log.error(e);
        } finally {
            ERCoreBusinessLogic.setActor(null);
            ec.unlock();
        }
        return result;
    }

    public WOComponent pingxAction() {
        WOComponent result = null;
        EOEditingContext ec = ERXEC.newEditingContext();
        ec.lock();
        try {
            EOUtilities.rawRowsForSQL(ec, EOModelGroup.defaultGroup().modelNames().lastObject(), "select count(*) from PRIORITY", null);
            result = pageWithName("ERXSuccess");
        } catch (Exception e) {
           
        } finally {
            ec.unlock();
        }
        return result;
    }

    public static People userFromRequest(WORequest r, EOEditingContext ec) {
        People user = People.clazz.currentUser(ec);
        if(user != null) {
            return user;
        }
        // This gets us the encrypted ID stored for the login cookie
        String encryptedPrimaryKey = r.cookieValueForKey("BTL");
        if (encryptedPrimaryKey != null && !encryptedPrimaryKey.equals("") && !encryptedPrimaryKey.equals("-")) {
            String clearPrimaryKey = ERXCrypto.crypterForAlgorithm(ERXCrypto.BLOWFISH).decrypt(encryptedPrimaryKey);
            if (clearPrimaryKey != null) {
                clearPrimaryKey = clearPrimaryKey.trim();
                ec.lock();
                try {
                    Integer clearPrimaryKeyInt = Integer.valueOf(clearPrimaryKey);
                    user = People.clazz.objectWithPrimaryKeyValue(ec, clearPrimaryKeyInt);
                } catch (NumberFormatException NFe) {
                    // WOApplication.application().logString(NFe.toString());
                } finally {
                    ec.unlock();
                }
            }
        }
        return user;
    }

    private static WOComponent errorPage(String message, Session session) {
        ErrorPageInterface error = D2W.factory().errorPage(session);
        error.setMessage(message);
        error.setNextPage(WOApplication.application().pageWithName("HomePage", session.context()));
        return (WOComponent) error;
    }

    public static class BugActionCallback implements ERXUtilities.Callback {
       
        public String numberFromRequest;

        public BugActionCallback(String numFromReq) {
            super();
            numberFromRequest = numFromReq;
        }

        public Object invoke(Object ctx) {
            Session session = (Session) ctx;
            WOComponent result = null;
            EOEditingContext ec = ERXEC.newEditingContext();
            ec.lock();
            try {
                Integer bugId = Integer.valueOf(numberFromRequest);
                Bug bug =  Bug.clazz.objectWithPrimaryKeyValue(ec, bugId);
                if (bug == null) {
                    result = errorPage("Bug not found", session);
                } else {
                    result = Factory.bugTracker().inspectBug(bug);
                }
            } catch (NumberFormatException nfe) {
                result = errorPage("Invalid Request", session);
            } catch (Exception e) {
                result = errorPage("Bug Not Found", session);
            } finally {
                ec.unlock();
            }
            return result;
        }
    }

    public WOComponent bugAction() {
        BugActionCallback result = new BugActionCallback((String) request().formValueForKey("number"));
        return entranceTemplate(result);
    }

    private WOComponent entranceTemplate(ERXUtilities.Callback successComponent) {
        WOComponent result = null;
        People u = userFromRequest(request(), session().defaultEditingContext());
        /*
        if (u != null) {
            ((Session) session()).setUser(u);
            return (WOComponent) successComponent.invoke(session());
        } else {
            Main loginPage = (Main) pageWithName("HomePage");
            loginPage.setNextPageCallback(successComponent);
            result = loginPage;
        }*/
        ((Session) session()).setUser(u);
        return (WOComponent) successComponent.invoke(session());
    }

    public static class EntranceActionCallback implements ERXUtilities.Callback {
        public Object invoke(Object ctx) {
            return WOApplication.application().pageWithName("HomePage", ((Session) ctx).context());
        }
    }

    public WOComponent entranceAction() {
        EntranceActionCallback result = new EntranceActionCallback();
        return entranceTemplate(result);
    }

    public WOComponent homeAction() {
        EntranceActionCallback result = new EntranceActionCallback();
        return entranceTemplate(result);
    }

    @Override
    public WOActionResults defaultAction() {
        // the reason for this redirect is that the session cookie and the
        // 'remember my login cookie'
        // are in xxx/cgi-bin/WebObjects/x.woa domain
        // if you hit xxx.cgi-bin/WebObjects/x, you do not get them!..
        WORedirect page = (WORedirect) pageWithName("WORedirect");
        page.setUrl(session().context().directActionURLForActionNamed("entrance", null));
        return page;
    }

    @Override
    public WOActionResults logoutAction() {
      WORedirect redirect = (WORedirect) pageWithName("WORedirect");
      redirect.setUrl(context().directActionURLForActionNamed("entrance", null));
      WOResponse response = redirect.generateResponse();

      WOCookie loginCookie = new WOCookie("BTL", "-");
      loginCookie.setExpires(NSTimestamp.DistantFuture);
      loginCookie.setPath("/");
      response.addCookie(loginCookie);
     
      if (existingSession() != null) {
        existingSession().terminate();
    }

      return response;
    }

}
TOP

Related Classes of er.bugtracker.DirectAction$EntranceActionCallback

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.