From: <jbo...@li...> - 2005-12-25 00:33:24
|
Author: unibrew Date: 2005-12-24 19:33:18 -0500 (Sat, 24 Dec 2005) New Revision: 1930 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsDescriptor.java trunk/forge/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java Log: [JBLAB-407] PollsPortlet can work now as RandomPollPortlet too. Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java 2005-12-25 00:30:23 UTC (rev 1929) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java 2005-12-25 00:33:18 UTC (rev 1930) @@ -26,6 +26,7 @@ import java.io.File; import java.util.Collection; import java.util.HashSet; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; @@ -56,6 +57,17 @@ public static final String ERROR_PARAMETER_NAME = "error"; /** + * Name of the request parameter which contains pollId. + */ + public static final String POLLID_PARAMETER_NAME = "pollId"; + + + /** + * Name of the request parameter which contains projectId. + */ + public static final String PROJECTID_PARAMETER_NAME = "projectId"; + + /** * Value of request parameter for false. */ public static final String FALSE = "false"; @@ -91,6 +103,17 @@ public static final String POLLS_DETAILS_JSP="polls_details.jsp"; /** + * Variable describes type for creating the context - one poll only should be included. + */ + public static final boolean ONE_TYPE = true; + + /** + * Variable describes type for creating the context - all poll's for project should be included. + */ + public static final boolean ALL_TYPE = false; + + + /** * Private constructor made in order to prevent from creating * PollTools object. */ @@ -187,6 +210,36 @@ } /** + * This method returns one of the projectId names which have defined polls. + * @param portalName + * Portal name. + * @param cm + * ContentManager object. + * @return + * Random projectId name. + */ + public static String getRandomDefinedProjectId (String portalName,ContentManager cm) { + List<String> projectIds = getDesc(portalName,cm).getTrackedProjectIds(); + return projectIds.get((int)(Math.random()*projectIds.size())); + } + + /** + * This method returns one of the Polls for specified projectId name. + * @param projectId + * Project id name for which the random Poll is requested. + * @param portalName + * Portal name. + * @param cm + * ContentManager object. + * @return + * Random pollId name. + */ + public static String getRandomPollForProjectId (String projectId,String portalName, ContentManager cm) { + List<Poll> polls = getDesc(portalName,cm).getPollsInfoForProject(projectId); + return polls.get((int)(Math.random()*polls.size())).getPollId(); + } + + /** * This method produces conten context for JSP view file showing * information about voting. * @param portalName @@ -197,11 +250,13 @@ * ContentManager object used for access to cms. * @param response * JBossRenderResponse object which is used for creating urls. + * @param pollIdSpecified + * The poll identification number specified if only one poll should be displayed. * @return * Content context for information JSP page. */ public static DelegateContext getInfoContext (final String portalName,final String projectId, - ContentManager cm,JBossRenderResponse response) { + ContentManager cm,JBossRenderResponse response, String pollIdSpecified) { // If the projectId is null method returns empty DelegateContext object. if (projectId==null) { @@ -227,6 +282,16 @@ // Getting the polls for given projectId. Map<String,Poll> values = desc.getPollsStatsForProject(projectId); + if (pollIdSpecified!=null) { + Set<String> retaininingPoll = new HashSet<String>(1); + retaininingPoll.add(pollIdSpecified); + values.keySet().retainAll(retaininingPoll); + } + + for (String elo : values.keySet()) { + System.out.println ("ZOSTAŁO: "+elo); + } + // Filling the context for portlet. /** * Context structure: @@ -250,8 +315,9 @@ temporary = values.get(pollId); poll.put("question",temporary.getQuestion()); poll.put("renderUrl",url.toString()); - url.setParameter("pollId",pollId); - url.setParameter("details","true"); + url.setParameter(POLLID_PARAMETER_NAME,pollId); + url.setParameter(DETAILED_VIEW_REQUEST,TRUE); + url.setParameter(PROJECTID_PARAMETER_NAME,projectId); poll.put("renderUrlDetailed",url.toString()); for (String tempAnswer : temporary.getAnswers()) { @@ -333,6 +399,8 @@ PortletURL url = response.createRenderURL(); poll.put("renderUrlVoting",url.toString()); url.setParameter(VOTED_PARAMETER_NAME,TRUE); + url.setParameter(POLLID_PARAMETER_NAME,pollId); + url.setParameter(PROJECTID_PARAMETER_NAME,projectId); poll.put("renderUrlInfo",url.toString()); for (String answer : answers) { @@ -366,7 +434,7 @@ * Content context for detailed information JSP page. */ public static DelegateContext getVotingContext (String portalName, String projectId, - String error, ContentManager cm,JBossRenderResponse response) { + String error, ContentManager cm,JBossRenderResponse response, String pollIdSpecified) { // If the projectId is null method returns empty DelegateContext object. if (projectId==null) { @@ -389,8 +457,15 @@ return ctx; } - List<Poll> pollDesc = desc.getPollsInfoForProject(projectId); + List<Poll> pollDesc=null; + if (pollIdSpecified!=null && !pollIdSpecified.equals("")) { + pollDesc = new LinkedList<Poll>(); + pollDesc.add(desc.getPoll(projectId,pollIdSpecified)); + } else { + pollDesc = desc.getPollsInfoForProject(projectId); + } + // Filling the context for portlet. /** * Context structure: Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsDescriptor.java 2005-12-25 00:30:23 UTC (rev 1929) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsDescriptor.java 2005-12-25 00:33:18 UTC (rev 1930) @@ -342,6 +342,19 @@ } /** + * Method produces copy of all projectId names which have defined Polls. + * @return + * List<String> of all projectId names. + */ + public synchronized List<String> getTrackedProjectIds() { + List<String> copy = new ArrayList<String>(polls.size()); + for ( String projectId : polls.keySet()){ + copy.add(projectId); + } + return copy; + } + + /** * Method simply returns Poll object for specified <code>projectId</code> * and <code>pollId</code> * @param projectId Modified: trunk/forge/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java =================================================================== --- trunk/forge/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java 2005-12-25 00:30:23 UTC (rev 1929) +++ trunk/forge/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java 2005-12-25 00:33:18 UTC (rev 1930) @@ -25,6 +25,7 @@ import java.io.IOException; +import javax.portlet.PortletConfig; import javax.portlet.PortletException; import javax.portlet.PortletRequestDispatcher; import javax.portlet.PortletSession; @@ -74,9 +75,9 @@ // Getting name of the project on which the download counter is used. String projectId = ProjectsHelper.getSelectedProjectId(request); - + ProjectsHelper.prepareRequest(request); - + // Getting User from request. User user = request.getUser(); if (user!=null) { @@ -92,27 +93,66 @@ // Adding eventuall errors information to the context. String errorReq = request.getParameter (PollTools.ERROR_PARAMETER_NAME); + // Checking whether user has requested to view detailed scores for poll. + String detailedReq = request.getParameter(PollTools.DETAILED_VIEW_REQUEST); + + // This variable contains manually requested pollId to render its voting view only. + String pollIdSpecified=null; + + // It is used if an instance have defined preference in instance descriptor. + Object modeFormPref = request.getPreferences().getValue("random",null); + System.out.println ("REQUESTED: "+modeFormPref); + if (modeFormPref!=null && modeFormPref.equals("all") && + (detailedReq!=null && detailedReq.compareTo(PollTools.TRUE)==0)==false && + (voted!=null && voted.compareTo(PollTools.TRUE)==0)==false ) { + projectId = PollTools.getRandomDefinedProjectId(portalName,contentManager); + pollIdSpecified = PollTools.getRandomPollForProjectId(projectId,portalName,contentManager); + } + DelegateContext pollContext=null; PortletRequestDispatcher rd = null; // If user has voted information page with scores will be displayed. if (voted!=null && voted.compareTo(PollTools.TRUE)==0) { System.out.println ("USER VOTED"); + + // Getting pollId about which user wants to see information. + String pollId = request.getParameter(PollTools.POLLID_PARAMETER_NAME); + + // Getting projectId from request in order to check whether it was forced. + String tempProjectId = request.getParameter(PollTools.PROJECTID_PARAMETER_NAME); + if (tempProjectId!=null && !tempProjectId.equals("")) { + projectId = tempProjectId; + } + + System.out.println("POLLID: "+pollId); + System.out.println("PROJECTID: "+projectId); + System.out.println("------------------"); + // Getting the poll context for scores information page. - pollContext = PollTools.getInfoContext(portalName,projectId,contentManager,response); + pollContext = PollTools.getInfoContext(portalName,projectId,contentManager,response,pollId); rd = getPortletContext().getRequestDispatcher( ForgeHelper.createRepoAccessPath(portalName, PollTools .getInfoJsp())); // If user has requested detailed information about voting on specified poll. - } else if (request.getParameter(PollTools.DETAILED_VIEW_REQUEST)!=null && - request.getParameter(PollTools.DETAILED_VIEW_REQUEST).compareTo(PollTools.TRUE)==0 ) { + } else if (detailedReq!=null && detailedReq.compareTo(PollTools.TRUE)==0 ) { System.out.println ("DETAILED VIEW"); // Getting pollId about which user wants to see detailed information. - String pollId = request.getParameter("pollId"); + String pollId = request.getParameter(PollTools.POLLID_PARAMETER_NAME); + // Getting projectId from request in order to check whether it was forced. + String tempProjectId = request.getParameter(PollTools.PROJECTID_PARAMETER_NAME); + if (tempProjectId!=null && !tempProjectId.equals("")) { + projectId = tempProjectId; + } + + System.out.println ("POLLID: "+pollId); + System.out.println ("PROJECTID: "+projectId); + System.out.println ("-------------------"); + // Getting the poll context for detailed voting information on specified poll. pollContext = PollTools.getDetailsContext(portalName,projectId,pollId,contentManager,response); rd = getPortletContext().getRequestDispatcher( @@ -124,7 +164,7 @@ System.out.println ("USER HAVEN'T VOTED"); // Getting the poll voting context. - pollContext = PollTools.getVotingContext(portalName,projectId,errorReq,contentManager,response); + pollContext = PollTools.getVotingContext(portalName,projectId,errorReq,contentManager,response,pollIdSpecified); rd = getPortletContext().getRequestDispatcher( ForgeHelper.createRepoAccessPath(portalName, PollTools .getVotingJsp())); @@ -167,6 +207,8 @@ if (PollTools.getDesc(portalName,contentManager).vote(vote,pollId,userId,projectId)) { // Adding parameter to url which tells doView to render scores information page. response.setRenderParameter(PollTools.VOTED_PARAMETER_NAME,PollTools.TRUE); + response.setRenderParameter(PollTools.POLLID_PARAMETER_NAME,pollId); + response.setRenderParameter(PollTools.PROJECTID_PARAMETER_NAME,projectId); System.out.println ("ZAGŁOSOWANO"); } else { response.setRenderParameter(PollTools.ERROR_PARAMETER_NAME,"You have already voted on that poll"); @@ -177,5 +219,6 @@ response.setRenderParameter(PollTools.ERROR_PARAMETER_NAME,"You haven't given your vote."); } } + } |