Author: dam...@jb... Date: 2006-01-13 16:10:43 -0500 (Fri, 13 Jan 2006) New Revision: 2095 Added: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Sorting.java Modified: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Counter.java qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterDescriptor.java qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterTools.java qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollDescriptor.java qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollVotesDatabase.java qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsDescriptor.java qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsWatcher.java qa/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterPortlet.java qa/forge/portal-extensions/forge-freezone/src/web/WEB-INF/portlet-instances.xml qa/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Column.java qa/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp qa/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/twoColumns.jsp qa/forge/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java qa/forge/portal-extensions/polls/src/web/WEB-INF/portlet-instances.xml qa/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml Log: MERGED: -r 2042:2094 https://svn.labs.jboss.com/trunk/forge into qa for 1.0.8 release testing. Modified: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Counter.java =================================================================== --- qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Counter.java 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Counter.java 2006-01-13 21:10:43 UTC (rev 2095) @@ -49,6 +49,11 @@ private Boolean visible; /** + * It informs in what way the counter have to be sorted. + */ + private Sorting sorting; + + /** * Main constructor simply initiates values. * * @param value @@ -56,10 +61,11 @@ * @param projectId * Name of project for this counter. */ - Counter (long value,String projectId,Boolean visible) { + Counter (long value,String projectId,Boolean visible,Sorting sorting) { this.value=value; this.projectId=projectId; this.visible = visible; + this.sorting = sorting; } /** @@ -99,7 +105,7 @@ * Method sets visibility of the counter. * @param visible */ - public void setVisible(Boolean visible) { + void setVisible(Boolean visible) { this.visible = visible; } @@ -109,4 +115,21 @@ public String toString () { return Long.toString(value); } + + /** + * Method returns the enum information about how the counter have to be sorted. + * @return + * Sorting order information. + */ + public Sorting getSorting() { + return sorting; + } + + /** + * Sets new sorting. + * @param sorting + */ + public void setSorting(Sorting sorting) { + this.sorting = sorting; + } } Modified: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterDescriptor.java =================================================================== --- qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterDescriptor.java 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterDescriptor.java 2006-01-13 21:10:43 UTC (rev 2095) @@ -26,8 +26,6 @@ import java.io.IOException; import java.io.InputStream; import java.util.Hashtable; -import java.util.LinkedList; -import java.util.List; import java.util.Map; import org.apache.xerces.parsers.DOMParser; @@ -54,6 +52,11 @@ private Map<String,Boolean> links; /** + * Describes the order in which counters are requested to be displayed. + */ + private Sorting sorting; + + /** * Name of tag in counter.xml containing counter link. */ public static final String LINK = "link"; @@ -69,6 +72,11 @@ public static final String VISIBILITY = "visible"; /** + * This variable contains name of the sorting attribute. + */ + public static final String SORTING = "sorting"; + + /** * This variable contains value for attributes which means TRUE. */ public static final String TRUE = "true"; @@ -104,6 +112,20 @@ // Parsing and gettting download links which are requested to be tracked by download counter. links = new Hashtable<String,Boolean>(); + + // Resolving way of sorting counters. + sorting = Sorting.RANDOM; + String sortingAtt = XmlTools.getAttributeValue(doc.getDocumentElement(),SORTING); + if (sortingAtt!=null && + (sortingAtt.compareToIgnoreCase(Sorting.ASCENDING.name())==0 + || sortingAtt.compareToIgnoreCase(Sorting.ASC.name())==0)) { + sorting = Sorting.ASCENDING; + } else if (sortingAtt!=null && + (sortingAtt.compareToIgnoreCase(Sorting.DESCENDING.name())==0 + || sortingAtt.compareToIgnoreCase(Sorting.DESC.name())==0)) { + sorting = Sorting.DESCENDING; + } + for (int i = 0; i < nodes.getLength(); i++) { n = nodes.item(i); if (n.getNodeType() == Node.ELEMENT_NODE) { @@ -131,6 +153,15 @@ } /** + * Returns sorting description for counters. + * @return + * Requested sorting order. + */ + public Sorting getSorting () { + return sorting; + } + + /** * Method simply returns links from the xml descriptor which are requested to be tracked. * @return * List<String> of download links. Modified: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterTools.java =================================================================== --- qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterTools.java 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterTools.java 2006-01-13 21:10:43 UTC (rev 2095) @@ -45,6 +45,15 @@ public static final String FORGE_FILE_ACCESS_DIR="file-access"; /** + * Name of the directory in dynamicly changing portal content dir containing download counters' files. + */ + public static final String DOWNLOAD_COUNTERS_DIR="downloads"; + /** + * Dir in portal-content containing dynamicly changing portal content. + */ + public static final String DYNAMIC_CONTENT_DIR = "dynamic-content"; + + /** * Name of JSP view file. */ public static final String DOWNLOADCOUNTER_JSP="normal.jsp"; @@ -144,7 +153,7 @@ * @return Path to main download counters descriptor. */ public static String getMainXmlPath (String portalName) { - return portalName + File.separator + ProjectsHelper.MEMBERS_DIR + File.separator + ProjectsHelper.DOWNLOADCOUNTERMAIN_DESC; + return DYNAMIC_CONTENT_DIR+File.separator+portalName+File.separator+DOWNLOAD_COUNTERS_DIR+File.separator+ProjectsHelper.DOWNLOADCOUNTERMAIN_DESC; } /** Modified: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java =================================================================== --- qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java 2006-01-13 21:10:43 UTC (rev 2095) @@ -25,15 +25,18 @@ import java.io.File; import java.io.InputStream; +import java.util.Comparator; import java.util.HashSet; import java.util.Hashtable; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TreeMap; import org.apache.xerces.parsers.DOMParser; import org.jboss.forge.common.XmlTools; +import org.jboss.logging.Logger; import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Directory; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; @@ -50,7 +53,7 @@ * @author Ryszard Kozmik */ -public class DownloadCountersDescriptor extends AbstractDescriptor{ +public class DownloadCountersDescriptor extends AbstractDescriptor { /** * Name of tag in counters.xml containing counter value. @@ -78,6 +81,11 @@ public static final String VISIBILITY = "visible"; /** + * This variable contains name of the sorting attribute. + */ + public static final String SORTING = "sorting"; + + /** * This variable contains value for attributes which means TRUE. */ public static final String TRUE = "true"; @@ -98,6 +106,11 @@ private ContentManager contentManager; /** + * Logger is used for displaying messages. + */ + private Logger logger; + + /** * This boolean variable turns to true if one of the counters * has been incremented. If value is true the downloadCounters Map * will be synchronized with a main xml descriptor @@ -118,6 +131,9 @@ // Just initializing the changeStatus variable changeStatus=false; + // Initializing logger. + logger = Logger.getLogger(this.getClass()); + // Getting the path to main dowload counters descriptor. String pathToCountersXml = File.separator + DownloadCounterTools.getMainXmlPath(portalName); @@ -143,8 +159,7 @@ synchronizeCounters(descriptors); } catch (Exception e) { - System.out.println ("[DOWNLOADCOUNTERS] Failed to initialize downloadCounters."); - e.printStackTrace(); + logger.error ("Failed to initialize downloadCounters.",e); } } @@ -173,8 +188,7 @@ try { membersDir = contentManager.getDirectory(portalName+File.separator+ProjectsHelper.MEMBERS_DIR); } catch (ResourceDoesNotExist e) { - e.printStackTrace(); - System.out.println ("[DOWNLOADCOUNTERSDESCRIPTOR] Members directory not exists."); + logger.error ("Members directory not exists.",e); return null; } @@ -240,6 +254,7 @@ for (String link:xmlProjectLinks.keySet()) { if (links.keySet().contains(link)) { setCounterVisibility (link,links.get(link)); + setCounterSorting (link,counterDesc.getSorting()); links.keySet().remove(link); } else { linksToDelete.add(link); @@ -248,12 +263,11 @@ removeLinksFromCounting(linksToDelete); - addLinksForCounting (links,projectId); + addLinksForCounting (links,projectId,counterDesc.getSorting()); } catch (Exception e) { - System.out.println ("[DOWNLOADCOUNTER] Problem with opening project "+ - projectId+" download counter descriptor."); - e.printStackTrace(); + logger.warn("Problem with opening project "+ + projectId+" download counter descriptor.",e); } } @@ -290,6 +304,17 @@ } /** + * Method sets sorting order in which this counter will be displayed. + * @param link + * The link to the counter. + * @param sorting + * Requested sorting order. + */ + private synchronized void setCounterSorting (String link,Sorting sorting) { + downloadCounters.get(link).setSorting(sorting); + } + + /** * Method adds links which are wished to be tracked. * * @param links @@ -297,10 +322,10 @@ * @param projectId * Project id name for which the links are added. */ - private synchronized void addLinksForCounting (Map<String,Boolean> links,String projectId) { + private synchronized void addLinksForCounting (Map<String,Boolean> links,String projectId,Sorting sorting) { // Adding new download links for tracking. for (String link:links.keySet()) { - downloadCounters.put(link,new Counter(0,projectId,links.get(link))); + downloadCounters.put(link,new Counter(0,projectId,links.get(link),sorting)); } } @@ -353,7 +378,53 @@ */ public synchronized Map<String,Long> getValuesForPortlet (String projectId) { Map<String,Boolean> links = getProjectLinks(projectId); - Map<String,Long> values = new Hashtable<String,Long>(links.size()); + Map<String,Long> values = null; + if (links.size()==0) { + values = new Hashtable<String,Long>(0); + return values; + } + + // Resolving way of sorting for counters. + Sorting sorting = downloadCounters.get(links.keySet().iterator().next()).getSorting(); + if (sorting==Sorting.ASC || sorting==Sorting.ASCENDING) { + values = new TreeMap<String,Long>(new Comparator<String>() { + /** + * This method is used for comparing counters taking to consideration their values. + * If defines ascending order. + * @param o1 + * First link to compare. + * @param o2 + * Second link to compare. + * @return + * negative integer - when counter for the first link is lower than for second one + * zero - when counters for both links are equal + * positive integer - when counter for the first link is greater than for second one + */ + public synchronized int compare(String link1, String link2) { + return (int)(downloadCounters.get(link1).getValue()-downloadCounters.get(link2).getValue()); + } + }); + } else if (sorting==Sorting.DESC || sorting==Sorting.DESCENDING) { + values = new TreeMap<String,Long>(new Comparator<String>() { + /** + * This method is used for comparing counters taking to consideration their values. + * It defines descending order. + * @param o1 + * First link to compare. + * @param o2 + * Second link to compare. + * @return + * negative integer - when counter for the first link is greater than for second one + * zero - when counters for both links are equal + * positive integer - when counter for the first link is lower than for second one + */ + public synchronized int compare(String link1, String link2) { + return (int)(downloadCounters.get(link2).getValue()-downloadCounters.get(link1).getValue()); + } + }); + } else { + values = new Hashtable<String,Long>(links.size()); + } for (String link : links.keySet()) { if (links.get(link)) { values.put(link,downloadCounters.get(link).getValue()); @@ -417,6 +488,9 @@ Node counterVisibility = doc.createAttribute(VISIBILITY); counterVisibility.appendChild(doc.createTextNode(temporary.getVisible().toString())); newCounter.getAttributes().setNamedItem(counterVisibility); + Node counterSorting = doc.createAttribute(SORTING); + counterSorting.appendChild(doc.createTextNode(temporary.getSorting().name())); + newCounter.getAttributes().setNamedItem(counterSorting); Node newLink = doc.createElement(LINK); Node newLinkText = doc.createTextNode(link); @@ -501,6 +575,17 @@ n = nodes.item(i); if (n.getNodeType() == Node.ELEMENT_NODE) { if (n.getNodeName().equals(DownloadCountersDescriptor.COUNTER)) { + Sorting tempSorting = Sorting.RANDOM; + String sortingAtt = XmlTools.getAttributeValue(n,SORTING); + if (sortingAtt!=null && + (sortingAtt.compareToIgnoreCase(Sorting.ASCENDING.name())==0 + || sortingAtt.compareToIgnoreCase(Sorting.ASC.name())==0)) { + tempSorting = Sorting.ASCENDING; + } else if (sortingAtt!=null && + (sortingAtt.compareToIgnoreCase(Sorting.DESCENDING.name())==0 + || sortingAtt.compareToIgnoreCase(Sorting.DESC.name())==0)) { + tempSorting = Sorting.DESCENDING; + } NodeList counterProps = n.getChildNodes(); String tempLink = null; String tempValue = null; @@ -524,7 +609,7 @@ } } if (tempLink!=null && tempValue!=null && tempId!=null) { - values.put(tempLink,new Counter(Long.valueOf(tempValue),tempId,visibility)); + values.put(tempLink,new Counter(Long.valueOf(tempValue),tempId,visibility,tempSorting)); } } } @@ -532,4 +617,6 @@ return values; } + + } Modified: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java =================================================================== --- qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java 2006-01-13 21:10:43 UTC (rev 2095) @@ -23,7 +23,6 @@ package org.jboss.forge.common.projects; -import java.util.Collection; import java.util.Set; import org.jboss.forge.common.service.NodeWatcher; Modified: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollDescriptor.java =================================================================== --- qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollDescriptor.java 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollDescriptor.java 2006-01-13 21:10:43 UTC (rev 2095) @@ -110,39 +110,29 @@ String tempQuestion = null; Set<String> tempAnswers = Collections.synchronizedSet(new LinkedHashSet<String>()); - System.out.println("[POLLSDESCRIPTOR] IN POLLS"); if (n.getNodeName().equals(POLL)) { - System.out.println("[POLLSDESCRIPTOR] IN POLL"); NodeList counterProps = n.getChildNodes(); for (int j=0;j< counterProps.getLength() ; j++) { - System.out.println("[POLLSDESCRIPTOR] IN CHILDREN OF POLL"); property = counterProps.item(j); if (property.getNodeType()== Node.ELEMENT_NODE){ - System.out.println("[POLLSDESCRIPTOR] IN ELEMENT OF POLL"); if (property.getNodeName().equals(QUESTION) && XmlTools.unmarshallText(property) != null && !XmlTools.unmarshallText(property).trim().equals("")) { tempQuestion = XmlTools.unmarshallText(property).trim(); - System.out.println("[POLLSDESCRIPTOR] IN QUESTION: "+tempQuestion); + } else if (property.getNodeName().equals(ANSWER) && XmlTools.unmarshallText(property) != null && !XmlTools.unmarshallText(property).trim().equals("")) { tempAnswers.add(XmlTools.unmarshallText(property).trim()); - System.out.println("[POLLSDESCRIPTOR] IN answer: "+XmlTools.unmarshallText(property).trim()); } } } // Checking if all needed information was collected and then creating Poll. if (tempQuestion!=null && !tempQuestion.equals("") && tempAnswers.size()>0) { - System.out.println ("ADDING A POLL TO THE POLLS"); polls.add(new Poll(tempAnswers,tempQuestion,Integer.toString((int)(Math.random()*99999999)))); } } } } - System.out.println ("Displaying Polls from PollDescriptor just after reading it."); - for (Poll poll : polls) { - System.out.println (poll); - } } /** Modified: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java =================================================================== --- qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java 2006-01-13 21:10:43 UTC (rev 2095) @@ -25,10 +25,12 @@ import java.io.File; import java.util.Collection; +import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Random; import java.util.Set; import javax.portlet.PortletURL; @@ -88,6 +90,11 @@ public static final String POLLS_DIR="polls"; /** + * Dir for dynamicly changing content in portal. + */ + public static final String DYNAMIC_CONTENT_DIR ="dynamic-content"; + + /** * Name of JSP view file prepared for displaying voting results. */ public static final String POLLS_INFO_JSP="polls_info.jsp"; @@ -112,6 +119,10 @@ */ public static final boolean ALL_TYPE = false; + /** + * The limit of failures. + */ + public static final int LIMIT = 20; /** * Private constructor made in order to prevent from creating @@ -129,7 +140,7 @@ * @return Path to polls descriptor. */ public static String getMainXmlPath (final String portalName) { - return portalName + File.separator + ProjectsHelper.MEMBERS_DIR + File.separator + ProjectsHelper.POLLS_DESC; + return DYNAMIC_CONTENT_DIR+File.separator+portalName+File.separator+POLLS_DIR+File.separator+ProjectsHelper.POLLS_DESC; } /** @@ -210,6 +221,40 @@ } /** + * Method adds randomly selected polls with their projectIds to the Map/ + * @param numberOfPolls + * Number of polls which is requested to be received. + * @param portalName + * Name of the portal. + * @param cm + * ContentManager + * @return + * Map<String,String> containing randomly selected polls. + */ + public static Map<String,String> getRandomPolls (int numberOfPolls,String portalName,ContentManager cm) { + Map<String,String> randomPolls = new HashMap<String,String>(); + + PollsDescriptor desc = getDesc(portalName,cm); + Random random = new Random(); + List<String> projectIds = desc.getTrackedProjectIds(); + List<Poll> polls = null; + + // Number of redundant randomly selected pollIds. If it exceeds the limit the while will stop. + int failures = 0; + while (numberOfPolls-->0 && failures<LIMIT) { + String projectId = projectIds.get((int)(random.nextFloat()*projectIds.size())); + polls = desc.getPollsInfoForProject(projectId); + String pollId = polls.get((int)(random.nextFloat()*polls.size())).getPollId(); + if (randomPolls.containsKey(pollId)) { + failures++; + continue; + } + randomPolls.put(pollId,projectId); + } + return randomPolls; + } + + /** * This method returns one of the projectId names which have defined polls. * @param portalName * Portal name. @@ -218,10 +263,11 @@ * @return * Random projectId name. */ - public static String getRandomDefinedProjectId (String portalName,ContentManager cm) { + /*public static String getRandomDefinedProjectId (String portalName,ContentManager cm) { List<String> projectIds = getDesc(portalName,cm).getTrackedProjectIds(); - return projectIds.get((int)(Math.random()*projectIds.size())); - } + Random random = new Random(); + return projectIds.get((int)(random.nextFloat()*projectIds.size())); + }*/ /** * This method returns one of the Polls for specified projectId name. @@ -234,10 +280,11 @@ * @return * Random pollId name. */ - public static String getRandomPollForProjectId (String projectId,String portalName, ContentManager cm) { + /*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(); - } + Random random = new Random(); + return polls.get((int)(random.nextFloat()*polls.size())).getPollId(); + }*/ /** * This method produces conten context for JSP view file showing @@ -287,11 +334,7 @@ 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: @@ -434,10 +477,10 @@ * Content context for detailed information JSP page. */ public static DelegateContext getVotingContext (String portalName, String projectId, - String error, ContentManager cm,JBossRenderResponse response, String pollIdSpecified) { + String error, ContentManager cm,JBossRenderResponse response, Map<String,String> specifiedPolls) { // If the projectId is null method returns empty DelegateContext object. - if (projectId==null) { + if (projectId==null && (specifiedPolls==null || (specifiedPolls!=null && specifiedPolls.size()==0))) { return new DelegateContext(); } @@ -453,15 +496,18 @@ } // If there is no tracked link for projectId return empty context. - if (!desc.checkForProjectPolls(projectId)) { + if (projectId!=null && !desc.checkForProjectPolls(projectId) && + (specifiedPolls==null || (specifiedPolls!=null && specifiedPolls.size()==0))) { return ctx; } List<Poll> pollDesc=null; - if (pollIdSpecified!=null && !pollIdSpecified.equals("")) { + if (specifiedPolls!=null && specifiedPolls.size()>0) { pollDesc = new LinkedList<Poll>(); - pollDesc.add(desc.getPoll(projectId,pollIdSpecified)); + for (String pollIdString : specifiedPolls.keySet()) { + pollDesc.add(desc.getPoll(specifiedPolls.get(pollIdString),pollIdString)); + } } else { pollDesc = desc.getPollsInfoForProject(projectId); } @@ -488,9 +534,16 @@ for (Poll pollObj : pollDesc) { DelegateContext poll = polls.next("poll"); - + if (specifiedPolls!=null && specifiedPolls.size()>0) { + projectId = specifiedPolls.get(pollObj.getPollId()); + } poll.put("question",pollObj.getQuestion()); poll.put("actionUrl",response.createActionURL().toString()); + PortletURL url = response.createRenderURL(); + url.setParameter(VOTED_PARAMETER_NAME,TRUE); + url.setParameter(POLLID_PARAMETER_NAME,pollObj.getPollId()); + url.setParameter(PROJECTID_PARAMETER_NAME,projectId); + poll.put("renderUrlInfo",url.toString()); poll.put("pollId",pollObj.getPollId()); poll.put("project",projectId); Modified: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollVotesDatabase.java =================================================================== --- qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollVotesDatabase.java 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollVotesDatabase.java 2006-01-13 21:10:43 UTC (rev 2095) @@ -26,6 +26,7 @@ import java.util.Hashtable; import java.util.Map; +import org.jboss.logging.Logger; import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Directory; import org.jboss.shotoku.Node; @@ -47,13 +48,18 @@ /** * Location where the *database* is stored in content repository. */ - public static final String DATABASE_LOCATION = "default/polls/database/"; + public static final String DATABASE_LOCATION = "dynamic-content/default/polls/database/"; /** * Shotoku Directory object which points to the *database*. */ private Directory databaseDir; + /** + * Logger is used for displaying messages. + */ + private Logger logger; + @Inject ContentManager contentManager; @@ -65,6 +71,7 @@ */ public PollVotesDatabase() throws ResourceDoesNotExist { databaseDir =contentManager.getDirectory(DATABASE_LOCATION); + logger = Logger.getLogger(this.getClass()); } /** @@ -74,18 +81,14 @@ */ public void createNewPollFile (String fileName) { try { - System.out.println ("POLLVOTESDATABASE CREATENEWPOLL"); Node node = databaseDir.newNode(fileName); node.save("[Polls] Creating new poll's database file."); } catch (ResourceAlreadyExists e) { - System.out.println ("[POLLPORTLET] Database file for poll already exists!"); - e.printStackTrace(); - } catch (SaveException e) { - System.out.println ("[POLLS] Problem while saving property for database file."); - e.printStackTrace(); + logger.error ("Database file for poll already exists!",e); + } catch (SaveException e3) { + logger.error ("Error while saving property for database file.",e3); }catch (RepositoryException e2) { - System.out.println ("[POLLPORTLET] Problem with creating data file for poll!"); - e2.printStackTrace(); + logger.error ("Error while creating data file for poll!",e2); } } @@ -119,8 +122,7 @@ * True if vote was added successfully, false if user has already voted on that Poll. */ public boolean votedOnPoll (String pollId, String userId, String vote) { - System.out.println ("SETTING PROPERTY FOR FILE"); - System.out.println ("POLLID: "+pollId+" USERID: "+userId+" VOTE: "+vote); + Node pollFile=null; try { // Getting the file for Poll @@ -131,29 +133,25 @@ if (voteValue!= null && !voteValue.equals("")) return false; } catch (RepositoryException e) { - System.out.println ("[POLLS] RepositoryException while getting properties for Node."); - e.printStackTrace(); + logger.error ("RepositoryException while getting properties for Node.",e); return false; } catch (ResourceDoesNotExist e2) { - System.out.println("[POLLPORTLET] Database file for poll didn't exist!"); - e2.printStackTrace(); + logger.warn ("Database file for poll didn't exist, creating new one.",e2); // There was no file for Poll so it is created. try { databaseDir.newNode(pollId); } catch (ResourceAlreadyExists e3) { - e3.printStackTrace(); + logger.error("Database file for poll already existed.",e3); } } - System.out.println("PRZED DODANIEM GŁOSU "+pollFile.getClass().getCanonicalName()); + // Saving vote pollFile.setProperty(userId,vote); - System.out.println("PO DODANIU GŁOSU PRZED SAVEM"+pollFile.getClass().getCanonicalName()); + try { pollFile.save("[Polls] Saving property for poll's database file."); - System.out.println("PO DODANU GŁOSU PO SAVIE"+pollFile.getClass().getCanonicalName()); } catch (SaveException e) { - System.out.println ("[POLLS] Problem while saving property for database file."); - e.printStackTrace(); + logger.error ("Error while saving property for database file.",e); } return true; } @@ -167,28 +165,22 @@ * Map<String,String> containing users' votes. */ public Map<String,String> getUserVotesForPollFile (String pollId) { - System.out.println ("GETUSERVOTESFORPOLLFILE POLLID: "+pollId); + Map<String,String> userVotes = null; // if no poll id name was specified, method returns empty Map if (pollId==null) return new Hashtable<String,String>(0); try { // Getting Node for Poll Node pollFile = databaseDir.getNode(pollId); - System.out.println("PRZED GETPROPERTIES "+pollFile.getClass().getCanonicalName()); + //Collecting users' votes. userVotes = pollFile.getProperties(); - System.out.println("PO GETPROPERTIES "+pollFile.getClass().getCanonicalName()); - System.out.println ("I'M BEFORE DISPLAYING FILE PROPERTIES."); - for (String first:userVotes.keySet()){ - System.out.println("PROPERTY: "+first+" VALUE: "+userVotes.get(first)); - } + } catch (RepositoryException e) { - System.out.println ("[POLLS] RepositoryException while getting properties for Node."); - e.printStackTrace(); + logger.error("RepositoryException while getting properties for Node.",e); return new Hashtable<String,String>(0); } catch (ResourceDoesNotExist e2) { - System.out.println("[POLLPORTLET] Database file for poll didn't exist!"); - e2.printStackTrace(); + logger.error("Database file for poll didn't exist!",e2); return new Hashtable<String,String>(0); } return userVotes; @@ -205,15 +197,13 @@ Node pollFile = databaseDir.getNode(pollId); // Removing file. pollFile.delete(); + } catch (ResourceDoesNotExist e2) { - System.out.println ("[POLLS] Poll's data file was already deleted."); - e2.printStackTrace(); + logger.error("Poll's data file was already deleted.",e2); } catch (DeleteException e3) { - System.out.println ("[POLLS] Problem with deleting database file."); - e3.printStackTrace(); + logger.error("Exception with deleting database file.",e3); } catch (RepositoryException e) { - System.out.println ("[POLLPORTLET] Problem while deleting poll's data file."); - e.printStackTrace(); + logger.error("Exception while deleting poll's data file.",e); } } Modified: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsDescriptor.java =================================================================== --- qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsDescriptor.java 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsDescriptor.java 2006-01-13 21:10:43 UTC (rev 2095) @@ -36,6 +36,7 @@ import org.apache.xerces.parsers.DOMParser; import org.jboss.forge.common.XmlTools; +import org.jboss.logging.Logger; import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Directory; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; @@ -110,6 +111,11 @@ private PollVotesDatabase database; /** + * Logger is used for displaying messages. + */ + private Logger logger; + + /** * This boolean variable turns to true if one of the polls * has been incremented. If value is true the polls Map * will be synchronized with a main xml polls descriptor. @@ -127,9 +133,12 @@ */ public PollsDescriptor (final String portalName, ContentManager contentManager) { - // Just initializing the changeStatus variable - changeStatus=false; + // Just initializing the changeStatus variable to true so that the file is saved after all modifications. + changeStatus=true; + // Initializing logger. + logger = Logger.getLogger(this.getClass()); + // Getting the path to main polls descriptor. String pathToPollsXml = File.separator + PollTools.getMainXmlPath(portalName); @@ -157,9 +166,10 @@ // projects' poll descriptors. synchronizePolls(descriptors); - System.out.println ("PollsDescriptor created successfuly"); + synchronizeWithFile(portalName); + } catch (Exception e) { - e.printStackTrace(); + logger.error ("Failed to initialize Polls.",e); } } @@ -228,8 +238,7 @@ // Getting all projects dirs in members directory. membersProjectDirs = membersDir.getDirectories(); } catch (ResourceDoesNotExist exception) { - System.out.println ("[POLLSDESCRIPTOR] Cannot get members dir' project folders!"); - exception.printStackTrace(); + logger.error ("Cannot get members dir' project folders!",exception); return nodes; } @@ -246,7 +255,7 @@ nodes.put(projectId,poll); break; } catch (ResourceDoesNotExist e) { - System.out.println ("[POLLSDESCRIPTOR] Failed to get "+projectId+" poll descriptor!"); + logger.warn("Failed to get "+projectId+" poll descriptor!"); } } } @@ -266,7 +275,7 @@ private void synchronizePolls (Map<String,org.jboss.shotoku.Node> projectPolls) { // Checking if tracked projects still have their poll.xml descriptors. - // If not deleting all tracked links for them. + // If not deleting all tracked polls for them. removeNotTrackedProjects(projectPolls.keySet()); // Iterating through projects nodes containing poll descriptors. @@ -304,9 +313,7 @@ addPollsForVoting (descPolls,projectId); } catch (Exception e) { - System.out.println ("[POLLSDESCRIPTOR] Problem with opening project "+ - projectId+" poll descriptor."); - e.printStackTrace(); + logger.error("Problem with opening project "+projectId+" poll descriptor.",e); } } @@ -323,7 +330,7 @@ * Set<String> containing all project id names available. */ private synchronized void removeNotTrackedProjects(Set<String> projectIds) { - //polls.keySet().retainAll(projectIds); + List<String> projectsToDelete = new LinkedList<String>(); for (String projectId : polls.keySet()) { if (!projectIds.contains(projectId)) { @@ -434,7 +441,7 @@ public void synchronizeWithFile(String portalName) { String pathToPollsXml = File.separator + PollTools.getMainXmlPath(portalName); - System.out.println ("SYNCHRONIZING MAIN XML FILE"); + try { DOMParser parser = new DOMParser(); @@ -460,9 +467,9 @@ xmlFile.setContent(xmlString); xmlFile.save ("[Polls] Main xml descriptor file update."); changeStatus=false; - System.out.println ("AFTER SYNCHRONIZING MAIN XML FILE"); + } catch (Exception e) { - e.printStackTrace(); + logger.error("Problem while synchronizing data with main xml descriptor.",e); } } @@ -540,7 +547,7 @@ * Project id name for which is this question. */ synchronized public boolean vote (String answer,String pollId,String userId, String projectId) { - System.out.println ("TRYING TO VOTE"); + List<Poll> projectPolls = polls.get(projectId); if (projectPolls!=null) { Poll poll = null; @@ -554,7 +561,6 @@ return false; } if (poll!=null) { - System.out.println ("VOTING AND CHANGING STATUS"); // Status change to inform about counters modification. changeStatus=true; poll.vote(answer); @@ -668,13 +674,10 @@ values.put(tempProjectId,new ArrayList<Poll>()); } values.get(tempProjectId).add(new Poll(answerVotes,tempQuestion,tempPollId)); - System.out.println ("JESTEM PRZED CREATE"); // Adding data file for saving votes if it isn't already created. if (!database.checkForPollFile(tempPollId)) { - System.out.println ("JESTEM W CREATE"); database.createNewPollFile(tempPollId); } - System.out.println ("JESTEM PO CREATE"); } } } Modified: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsWatcher.java =================================================================== --- qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsWatcher.java 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollsWatcher.java 2006-01-13 21:10:43 UTC (rev 2095) @@ -89,26 +89,23 @@ */ public Object nodeUpdate(String portalName, Object currentValue) { - System.out.println ("IN UPDATE CHANGE STATUS: "+((PollsDescriptor)currentValue).hasChanged()); boolean resources = rw.checkResources(); boolean descriptors = false; if (currentValue!=null) descriptors = checkForNewResources((PollsDescriptor)currentValue,portalName); - System.out.println ("CHECKING RESOURCES: "+resources); - System.out.println ("DESCRITPROS: "+descriptors); - if (currentValue==null || resources//rw.checkResources() - || !descriptors){//checkForNewResources((PollsDescriptor)currentValue,portalName)) { - System.out.println("CREATING NEW DESCRIPTOR OBJECT."); + + if (currentValue==null || resources || !descriptors){ + return getDescriptor(portalName); + } else if (((PollsDescriptor)currentValue).hasChanged()){ - System.out.println ("I'M IN POLLWATCHER MAIN XML UPDATE."); + // There was some change on object connected to main polls xml descriptor // so we must synchronize the object with the file. PollsDescriptor descriptor = (PollsDescriptor)currentValue; descriptor.synchronizeWithFile(portalName); - System.out.println ("I'M IN POLLWATCHER AFTER MAIN XML UPDATE."); return null; } - System.out.println ("AT THE END OF NODEUPDATE"); + return null; } Copied: qa/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Sorting.java (from rev 2094, trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Sorting.java) Modified: qa/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterPortlet.java =================================================================== --- qa/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterPortlet.java 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterPortlet.java 2006-01-13 21:10:43 UTC (rev 2095) @@ -41,8 +41,9 @@ import org.jboss.shotoku.aop.Inject; /** + * DownloadCounters portlet. + * * @author Ryszard Kozmik - * Downlaod Counter portlet. */ public class DownloadCounterPortlet extends JBossPortlet { Modified: qa/forge/portal-extensions/forge-freezone/src/web/WEB-INF/portlet-instances.xml =================================================================== --- qa/forge/portal-extensions/forge-freezone/src/web/WEB-INF/portlet-instances.xml 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/forge-freezone/src/web/WEB-INF/portlet-instances.xml 2006-01-13 21:10:43 UTC (rev 2095) @@ -14,4 +14,14 @@ </preference> </preferences> </instance> + <instance> + <instance-name>FreezoneRightPanelPortletInstance</instance-name> + <component-ref>PrjFreezonePortlet</component-ref> + <preferences> + <preference> + <name>page</name> + <value>default/members/default/freezone/rightPanelContent.html</value> + </preference> + </preferences> + </instance> </instances> Modified: qa/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Column.java =================================================================== --- qa/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Column.java 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Column.java 2006-01-13 21:10:43 UTC (rev 2095) @@ -70,15 +70,16 @@ DelegateContext entryContext = projectContext.next("entry"); - Long value = null; + entryContext.put("name", getName()); + try { - value = plugin.getValue(projectId); + Long value = plugin.getValue(projectId); + + if (value != null) { + entryContext.put("value", Long.toString(value)); + } } catch (Exception e) { log.error("Could not get value for plugin: " + plugin.getId(), e); } - - entryContext.put("value", Long.toString(value)); - - entryContext.put("name", getName()); } } Modified: qa/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp =================================================================== --- qa/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp 2006-01-13 21:10:43 UTC (rev 2095) @@ -130,8 +130,8 @@ <tr> <td class="leftside"><p:region regionName='left'/></td> <td class="bodycell"><p:region regionName='center'/></td> + <td ><p:region regionName='right'/></td> - </tr> </tbody></table> Modified: qa/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/twoColumns.jsp =================================================================== --- qa/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/twoColumns.jsp 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/twoColumns.jsp 2006-01-13 21:10:43 UTC (rev 2095) @@ -113,7 +113,8 @@ <table width="100%" bgcolor="#FFFFFF"> <tr> <td class="leftColumn"><p:region regionName='left'/></td> -<td class="centerColumn"><p:region regionName='center'/></td> +<td class="centerColumn"><p:region regionName='center'/></td> +<td class="centerColumn"><p:region regionName='right'/></td> </tr> </table> @@ -127,4 +128,4 @@ </table> </body> -</html> \ No newline at end of file +</html> Modified: qa/forge/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java =================================================================== --- qa/forge/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/polls/src/java/org/jboss/forge/polls/PollsPortlet.java 2006-01-13 21:10:43 UTC (rev 2095) @@ -24,19 +24,16 @@ package org.jboss.forge.polls; import java.io.IOException; +import java.util.Map; -import javax.portlet.PortletConfig; import javax.portlet.PortletException; import javax.portlet.PortletRequestDispatcher; -import javax.portlet.PortletSession; -import javax.portlet.PortletURL; import org.jboss.forge.common.ForgeHelper; import org.jboss.forge.common.projects.PollTools; import org.jboss.forge.common.projects.ProjectsHelper; -import org.jboss.portal.common.context.Context; +import org.jboss.logging.Logger; import org.jboss.portal.common.context.DelegateContext; -import org.jboss.portal.core.model.User; import org.jboss.portal.core.servlet.jsp.PortalJsp; import org.jboss.portlet.JBossActionRequest; import org.jboss.portlet.JBossActionResponse; @@ -62,6 +59,11 @@ ContentManager contentManager; /** + * Logger is used for displaying messages. + */ + private Logger logger; + + /** * Method displays one of three views - voting view or scores information view * or voting detailed information. */ @@ -73,20 +75,11 @@ // resolving name of a portal String portalName = ForgeHelper.getPortalName(request); - // Getting name of the project on which the download counter is used. + // Getting name of the project on which the polls are used. String projectId = ProjectsHelper.getSelectedProjectId(request); ProjectsHelper.prepareRequest(request); - // Getting User from request. - User user = request.getUser(); - if (user!=null) { - String userName = user.getUserName(); - System.out.println ("USERNAME: "+userName); - } else { - System.out.println ("USER IS NULL"); - } - // Checking whether user has given his vote. String voted = request.getParameter(PollTools.VOTED_PARAMETER_NAME); @@ -97,16 +90,21 @@ String detailedReq = request.getParameter(PollTools.DETAILED_VIEW_REQUEST); // This variable contains manually requested pollId to render its voting view only. - String pollIdSpecified=null; + Map<String,String> specifiedPolls=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); + Object modeFromPref = request.getPreferences().getValue("random",null); + + try { + if (modeFromPref!=null && !modeFromPref.equals("") && + (detailedReq!=null && detailedReq.compareTo(PollTools.TRUE)==0)==false && + (voted!=null && voted.compareTo(PollTools.TRUE)==0)==false ) { + Integer numberOfRandomPolls = Integer.parseInt((String)modeFromPref); + specifiedPolls = PollTools.getRandomPolls(numberOfRandomPolls,portalName,contentManager); + } + } catch (NumberFormatException e) { + logger =Logger.getLogger(this.getClass()); + logger.warn("Wrong number format in instance preference.",e); } DelegateContext pollContext=null; @@ -114,7 +112,6 @@ // 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); @@ -124,11 +121,7 @@ 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,pollId); rd = getPortletContext().getRequestDispatcher( @@ -137,9 +130,7 @@ // If user has requested detailed information about voting on specified poll. } 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(PollTools.POLLID_PARAMETER_NAME); @@ -149,10 +140,6 @@ 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( @@ -161,15 +148,22 @@ // If user hasn't done anything yet the voting page will be displayed. } else { - System.out.println ("USER HAVEN'T VOTED"); // Getting the poll voting context. - pollContext = PollTools.getVotingContext(portalName,projectId,errorReq,contentManager,response,pollIdSpecified); + pollContext = PollTools.getVotingContext(portalName,projectId,errorReq,contentManager,response,specifiedPolls); rd = getPortletContext().getRequestDispatcher( ForgeHelper.createRepoAccessPath(portalName, PollTools .getVotingJsp())); } + // Claring request parameters after reading them. + Map parameterMap = request.getParameterMap(); + parameterMap.remove(PollTools.POLLID_PARAMETER_NAME); + parameterMap.remove(PollTools.PROJECTID_PARAMETER_NAME); + parameterMap.remove(PollTools.ERROR_PARAMETER_NAME); + parameterMap.remove(PollTools.VOTED_PARAMETER_NAME); + parameterMap.remove(PollTools.DETAILED_VIEW_REQUEST); + // Adding content context to the request attributes. request.setAttribute(PortalJsp.CTX_REQUEST, pollContext); rd.include(request, response); @@ -191,17 +185,12 @@ // Getting name of the project on which the PollsPortlet is used. String projectId = request.getParameter(ProjectsHelper.PROJECT_URL_PARAM); - System.out.println ("HELLO I'M IN POLLPORTLET VOTE: "+vote); - String userId = request.getUser()==null?"user"+Integer.toString((int)(Math.random()*100000)):request.getUser().getUserName(); - - System.out.println("PROJECTID:"+projectId); - - if (vote != null && !vote.equals("")) { - - - System.out.println ("VOTING"); - System.out.println ("VOTE: "+vote+"POLLID:"+pollId+" userId:"+userId+" PROJECTID: "+projectId); - + String userId = request.getUser()!=null?request.getUser().getUserName():null; + + if (userId==null) { + response.setRenderParameter(PollTools.ERROR_PARAMETER_NAME,"You have to login before voting."); + } else if (vote != null && !vote.equals("") && userId!=null) { + // Trying to vote. If it returns true it means that vote was given successfully // if not it means that user has already voted on this poll. if (PollTools.getDesc(portalName,contentManager).vote(vote,pollId,userId,projectId)) { @@ -209,13 +198,11 @@ 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"); - System.out.println ("GŁOS ODRZUCONO"); } } else { - System.out.println ("USER ZONK"); response.setRenderParameter(PollTools.ERROR_PARAMETER_NAME,"You haven't given your vote."); } } Modified: qa/forge/portal-extensions/polls/src/web/WEB-INF/portlet-instances.xml =================================================================== --- qa/forge/portal-extensions/polls/src/web/WEB-INF/portlet-instances.xml 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/polls/src/web/WEB-INF/portlet-instances.xml 2006-01-13 21:10:43 UTC (rev 2095) @@ -4,4 +4,14 @@ <instance-name>PollsPortletInstance</instance-name> <component-ref>PollsPortlet</component-ref> </instance> + <instance> + <instance-name>PollsPortletInstanceRandom</instance-name> + <component-ref>PollsPortlet</component-ref> + <preferences> + <preference> + <name>random</name> + <value>3</value> + </preference> + </preferences> + </instance> </instances> Modified: qa/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml =================================================================== --- qa/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml 2006-01-13 18:45:31 UTC (rev 2094) +++ qa/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml 2006-01-13 21:10:43 UTC (rev 2095) @@ -95,6 +95,20 @@ <height>2</height> <window-state>normal</window-state> </window> + <window> + <window-name>PollsPortletWindowDefaultRandom</window-name> + <instance-ref>polls.PollsPortlet.PollsPortletInstanceRandom</instance-ref> + <region>right</region> + <height>0</height> + <window-state>normal</window-state> + </window> + <window> + <window-name>FreezonePortletWindowDefaultRight</window-name> + <instance-ref>prj-freezone.PrjFreezonePortlet.FreezoneRightPanelPortletInstance</instance-ref> + <default>true</default> + <region>right</region> + <height>1</height> + </window> </page> @@ -270,6 +284,13 @@ <region>center</region> <height>0</height> </window> + <window> + <window-name>PollsPortletWindowInfo</window-name> + <instance-ref>polls.PollsPortlet.PollsPortletInstance</instance-ref> + <region>right</region> + <height>1</height> + <window-state>normal</window-state> + </window> </page> <page> @@ -330,13 +351,7 @@ <height>1</height> <window-state>normal</window-state> </window> - <!-- <window> - <window-name>PollsPortletWindowDefaultDownloads</window-name> - <instance-ref>polls.PollsPortlet.PollsPortletInstance</instance-ref> - <region>center</region> - <height>2</height> - <window-state>normal</window-state> - </window>--> + </page> <page> |