Author: vjrj_ Date: 2011-05-05 16:46:37 +0200 (Thu, 05 May 2011) New Revision: 1346 Added: trunk/img/kune-intro-min.png Removed: trunk/src/main/java/cc/kune/core/server/content/CommentManager.java trunk/src/main/java/cc/kune/core/server/content/CommentManagerDefault.java trunk/src/main/java/cc/kune/core/shared/dto/CommentDTO.java trunk/src/main/java/cc/kune/domain/Comment.java trunk/src/test/java/cc/kune/core/server/integration/content/ContentCommentServiceTest.java Modified: trunk/img/kune-intro.svg trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java trunk/src/main/java/cc/kune/core/server/access/FinderService.java trunk/src/main/java/cc/kune/core/server/access/FinderServiceDefault.java trunk/src/main/java/cc/kune/core/server/content/ContentManager.java trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java trunk/src/main/java/cc/kune/core/server/state/StateContent.java trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java trunk/src/main/java/cc/kune/core/shared/dto/ContentSimpleDTO.java trunk/src/main/java/cc/kune/core/shared/dto/StateContentDTO.java trunk/src/main/java/cc/kune/domain/Content.java trunk/src/main/java/cc/kune/gspace/client/actions/RenameAction.java trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemDescriptor.java trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.ui.xml trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java trunk/src/main/resources/META-INF/persistence.xml trunk/src/main/resources/dozerBeanMapping.xml trunk/src/test/java/cc/kune/core/server/TestConstants.java trunk/src/test/java/cc/kune/core/server/access/FinderTest.java trunk/src/test/java/cc/kune/core/server/manager/ContentManagerTest.java trunk/src/test/java/cc/kune/core/server/mapper/MapperTest.java Log: Changes in db domain, some other fixes Added: trunk/img/kune-intro-min.png =================================================================== (Binary files differ) Property changes on: trunk/img/kune-intro-min.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/img/kune-intro.svg =================================================================== --- trunk/img/kune-intro.svg 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/img/kune-intro.svg 2011-05-05 14:46:37 UTC (rev 1346) @@ -24,9 +24,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="0.98994949" - inkscape:cx="448.08112" - inkscape:cy="520" + inkscape:zoom="1" + inkscape:cx="124.2033" + inkscape:cy="320.54641" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" @@ -432,60 +432,109 @@ sodipodi:type="arc" /> </g> <g - id="g8729" - transform="matrix(0.69032837,0,0,0.69032837,-226.87213,174.45352)"> + id="g8699-2" + transform="matrix(0.69032837,0,0,0.69032837,66.145968,308.75342)" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kune-intro-min.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> <path inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png" - sodipodi:type="arc" - style="color:#000000;fill:#aaeeff;fill-opacity:1;fill-rule:nonzero;stroke:#b3b3b3;stroke-width:1.48864591;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - id="path4967" + sodipodi:type="star" + style="color:#000000;fill:none;stroke:#28220b;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4963-9" + sodipodi:sides="5" + sodipodi:cx="35" + sodipodi:cy="12.362183" + sodipodi:r1="5" + sodipodi:r2="4.045085" + sodipodi:arg1="1.5707963" + sodipodi:arg2="2.1991149" + inkscape:flatsided="true" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 35,17.362183 -4.755283,-3.454915 1.816357,-5.5901703 5.877852,-10e-8 1.816357,5.5901694 z" + inkscape:transform-center-y="-0.10735044" + transform="matrix(2.331168,0.83049401,-0.83049401,2.331168,12.776852,771.74251)" + inkscape:transform-center-x="1.078998" /> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/java/cc/kune/wspace/client/resources/groupSpaceEnabled.png" + transform="matrix(1.1754752,0,0,2.3509505,-21.691738,753.33034)" + d="m 110,32.362183 c 0,5.522847 -8.95431,10 -20,10 -11.045695,0 -20,-4.477153 -20,-10 0,-5.522848 8.954305,-10 20,-10 11.04569,0 20,4.477152 20,10 z" + sodipodi:ry="10" + sodipodi:rx="20" + sodipodi:cy="32.362183" sodipodi:cx="90" - sodipodi:cy="32.362183" - sodipodi:rx="20" - sodipodi:ry="10" - d="m 110,32.362183 c 0,5.522847 -8.95431,10 -20,10 -11.045695,0 -20,-4.477153 -20,-10 0,-5.522848 8.954305,-10 20,-10 11.04569,0 20,4.477152 20,10 z" - transform="matrix(1.1754752,0,0,2.3509505,30.276632,753.33034)" /> + id="path4965-9" + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#800000;stroke-width:1.48864591;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> <path inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png" - style="color:#000000;fill:#2ca05a;fill-opacity:1;fill-rule:nonzero;stroke:#2ca05a;stroke-width:2.47468472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 130.79962,807.50532 c -2.85339,0.78923 -5.20625,2.69048 -7.74114,4.12698 -1.45578,1.08139 -3.17371,4.03552 -1.21347,5.32414 1.55176,0.2611 2.79811,-1.05921 4.32566,-1.15498 1.78407,-0.4112 3.60556,-0.7363 5.29696,-1.46265 2.88934,-0.9105 2.88934,-0.9105 3.18467,-1.97638 0.14032,-1.60483 -1.00047,-3.09256 -2.07745,-4.18939 -0.49137,-0.40285 -1.11497,-0.78049 -1.77523,-0.66772 z" - id="path4969" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccc" /> + transform="matrix(4.6623359,1.6609881,-1.6609881,4.6623359,51.694712,721.54769)" + d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z" + sodipodi:ry="1" + sodipodi:rx="1" + sodipodi:cy="16.362183" + sodipodi:cx="15" + id="path4973-0" + style="color:#000000;fill:#dd8a3d;fill-opacity:1;stroke:#dd8a3d;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> <path inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png" - style="color:#000000;fill:#2ca05a;fill-opacity:1;fill-rule:nonzero;stroke:#2ca05a;stroke-width:2.47468472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - d="m 153.3922,823.22551 c -4.04703,2.06374 -8.81245,4.142 -10.56886,8.25203 -0.54013,1.26397 0.22272,2.75445 0.4124,4.10295 0.7708,1.43658 -1.11269,2.70312 -0.55672,4.14497 0.66534,1.49717 2.56652,1.27157 3.82727,0.79099 1.28493,-0.44158 -0.53582,-1.70575 0,0 0.58286,1.36335 5.36635,1.77935 6.80857,1.16016 1.38701,-0.50855 2.33091,-0.74837 2.99303,-1.90611 2.17102,-4.41676 3.23712,-9.41812 2.89588,-14.33661 -0.10641,-1.32539 -0.51397,-2.60792 -0.99259,-3.83098 -0.49507,-1.61389 -2.16711,0.0173 -2.82476,0.68071 -0.60256,0.42631 -1.2709,0.77633 -1.99422,0.94189 z" - id="path4983" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cacccccccccc" /> + sodipodi:type="arc" + style="color:#000000;fill:#69312f;fill-opacity:1;stroke:#69312f;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4975-8" + sodipodi:cx="15" + sodipodi:cy="16.362183" + sodipodi:rx="1" + sodipodi:ry="1" + d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z" + transform="matrix(4.6623359,1.6609881,-1.6609881,4.6623359,38.408722,716.19953)" /> <path inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png" - inkscape:connector-curvature="0" - id="path4985" - d="m 121.52672,824.27304 c -2.3826,0.90534 -4.95654,1.52602 -7.13172,2.85353 -1.8032,1.51882 -1.57875,4.29287 -0.64391,6.22636 1.14716,2.47466 2.05723,5.06419 3.4281,7.43042 1.32587,1.74784 -0.0893,0.98747 1.52127,2.46832 0.45524,0.54208 3.2913,3.28282 4.94937,2.47469 0.82652,-0.40286 0.61983,-1.62095 0.54826,-2.70337 0.52083,-2.24499 -0.82476,-4.39163 -0.7175,-6.65278 -0.0579,-2.83898 0.49943,-5.64398 0.8377,-8.45265 0.19302,-1.55725 -0.68561,-4.455 -2.79157,-3.64452 z" - style="color:#000000;fill:#2ca05a;fill-opacity:1;fill-rule:nonzero;stroke:#2ca05a;stroke-width:2.47468472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" - sodipodi:nodetypes="cccccacccc" /> + transform="matrix(4.6623359,1.6609881,-1.6609881,4.6623359,50.908082,736.08463)" + d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z" + sodipodi:ry="1" + sodipodi:rx="1" + sodipodi:cy="16.362183" + sodipodi:cx="15" + id="path4977-1" + style="color:#000000;fill:#28220b;fill-opacity:1;stroke:#28220b;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> <path inkscape:export-ydpi="90" inkscape:export-xdpi="90" - inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/java/cc/kune/wspace/client/resources/publicSpaceEnabled.png" - transform="matrix(1.1754752,0,0,2.3509505,30.276632,753.33034)" - d="m 110,32.362183 c 0,5.522847 -8.95431,10 -20,10 -11.045695,0 -20,-4.477153 -20,-10 0,-5.522848 8.954305,-10 20,-10 11.04569,0 20,4.477152 20,10 z" - sodipodi:ry="10" - sodipodi:rx="20" - sodipodi:cy="32.362183" - sodipodi:cx="90" - id="path4987" - style="color:#000000;fill:none;stroke:#002255;stroke-width:1.48864591;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png" + sodipodi:type="arc" + style="color:#000000;fill:#cc6633;fill-opacity:1;stroke:#cc6633;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4979-3" + sodipodi:cx="15" + sodipodi:cy="16.362183" + sodipodi:rx="1" + sodipodi:ry="1" + d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z" + transform="matrix(4.6623359,1.6609881,-1.6609881,4.6623359,37.248612,739.8127)" /> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png" + transform="matrix(5.5489598,1.9768537,-1.9768537,5.5489598,20.951652,708.53981)" + d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z" + sodipodi:ry="1" + sodipodi:rx="1" + sodipodi:cy="16.362183" + sodipodi:cx="15" + id="path4981-1" + style="color:#000000;fill:#ffdb6b;fill-opacity:1;stroke:#dd8a3d;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" sodipodi:type="arc" /> </g> <g @@ -759,5 +808,283 @@ x="74.030479" sodipodi:role="line" id="tspan10129">in real time</tspan></text> + <g + id="g9950-6" + transform="matrix(1.1841718,0,0,1.1841718,152.99098,651.95049)" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kune-intro-min.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <path + inkscape:export-ydpi="399.59854" + inkscape:export-xdpi="399.59854" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kune-logo-1200.png" + id="path2585-8" + d="m 273.08439,61.656431 c -0.94086,0 -1.84521,0.0038 -2.7527,0.06255 -0.0847,0.01722 -0.16503,0.0466 -0.25025,0.06255 -0.84477,0.157787 -1.67823,0.292338 -2.56501,0.312813 -0.12283,0.01722 -0.25319,-0.01836 -0.37537,0 -7.23791,1.089665 -13.35321,4.232391 -18.26793,9.446767 -5.73951,6.06158 -8.63346,13.323179 -8.63347,21.771374 0,8.542995 2.89397,15.853925 8.63347,21.896495 6.21303,6.51614 14.2855,9.75956 24.21126,9.75958 5.26591,-2e-5 10.3285,-1.30838 15.13985,-3.94137 4.81128,-2.55719 8.9947,-6.17652 12.57485,-10.76056 l -10.82313,-6.00589 c -4.65983,6.21305 -10.38519,9.32165 -17.20437,9.32165 -4.7356,0 -8.98159,-1.53619 -12.63741,-4.56698 -3.71271,-3.03077 -5.56801,-6.72237 -5.56796,-11.135945 l 49.48606,0 0,-2.50246 c -5e-5,-10.702335 -3.62514,-19.272304 -10.82312,-25.712732 -6.06157,-5.360601 -12.77627,-8.007783 -20.14477,-8.007859 z m -230.100847,0.43793 0,23.961011 -8.383224,0 0,12.262047 8.383224,0 0,25.024561 12.762525,0 0,-25.024561 7.695059,0 15.702918,25.024561 15.139855,0 -21.083194,-31.781201 20.144769,-28.277758 -15.452668,0 -15.577788,22.772351 -6.568951,0 0,-23.961011 -12.762525,0 z m 156.591197,0 c -2.19697,0.392104 -4.24408,1.030291 -6.13103,2.001968 -3.18232,1.704844 -5.69466,3.953222 -7.56992,6.756633 l 0,-7.569941 -12.82509,0 0,60.058959 12.82509,0 0,-33.658041 c -2e-5,-4.811275 1.35771,-8.502905 4.0665,-11.13593 2.72765,-2.632924 6.18568,-3.941333 10.44774,-3.941371 4.50823,3.8e-5 8.0288,1.20973 10.51032,3.691123 2.48138,2.481482 3.69105,6.370493 3.69113,11.636428 l 0,33.407791 12.82509,0 0,-36.223052 c -7e-5,-7.36852 -2.24843,-13.456553 -6.75664,-18.267934 -3.38123,-3.60845 -7.29356,-5.854486 -11.76155,-6.756633 l -9.32164,0 z m -97.22042,1.18866 0,34.784148 c -2e-5,8.145201 2.74589,14.730761 8.2581,19.769411 5.1144,4.73557 11.44922,7.13197 18.89354,7.13199 7.52004,-2e-5 13.82273,-2.39642 18.95611,-7.13199 5.51215,-5.03865 8.25804,-11.62421 8.25811,-19.769411 l 0,-34.784148 -12.82509,0 0,33.658038 c -7e-5,4.432511 -1.35779,8.038631 -4.06649,10.823121 -2.80351,2.87925 -6.21219,4.31674 -10.32264,4.31674 -3.95896,2e-5 -7.39407,-1.45642 -10.19751,-4.31674 -2.78453,-2.87919 -4.12909,-6.46636 -4.12905,-10.823121 l 0,-33.658038 -12.82508,0 z M 271.4578,73.16773 c 4.18619,6.4e-5 7.84165,1.173592 10.94824,3.503441 3.01177,2.386754 5.22976,5.863768 6.63151,10.447757 l -34.47133,0 c 1.00391,-4.413515 3.087,-7.841158 6.19357,-10.32264 3.0118,-2.40562 6.56857,-3.628494 10.69801,-3.628558 z" + style="font-size:58.13353348px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#a56941;fill-opacity:1;stroke:none;font-family:Emblem" + inkscape:connector-curvature="0" /> + <g + inkscape:export-ydpi="399.59854" + inkscape:export-xdpi="399.59854" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kune-logo-1200.png" + transform="matrix(0.43982058,0,0,0.4392609,-61.046168,-320.82474)" + id="g6020-0"> + <path + transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)" + id="path6022-2" + d="m 60.321717,411.99998 377.014613,0" + style="color:#000000;fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#dd8a3d;stroke-width:109.23953247;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)" + id="path6024-1" + d="m 252.61203,788.60332 0,-377.01178" + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffdb6b;stroke-width:109.23950958;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)" + id="path6026-0" + d="m 252.86937,597.15755 377.0124,0" + style="color:#000000;fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#69312f;stroke-width:109.23951721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)" + id="path6028-5" + d="m 437.45588,596.97447 0,-377.01491" + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#cc6633;stroke-width:109.23950195;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)" + id="path6030-1" + d="m 372.87905,411.27704 64.93441,0" + style="color:#000000;fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#dd8a3d;stroke-width:109.23947906;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block" + inkscape:connector-curvature="0" /> + </g> + </g> + <text + sodipodi:linespacing="125%" + id="text2991-8" + y="847.95343" + x="151.89561" + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#dd8a3d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold" + xml:space="preserve" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kune-intro-min.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"><tspan + style="font-size:32px;font-weight:bold;fill:#dd8a3d;fill-opacity:1;-inkscape-font-specification:Ubuntu Bold" + y="847.95343" + x="151.89561" + id="tspan2993-4" + sodipodi:role="line">Comunicate with others</tspan></text> + <text + xml:space="preserve" + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#dd8a3d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold" + x="197.72444" + y="1189.9738" + id="text2995-7" + sodipodi:linespacing="125%" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kune-intro.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"><tspan + sodipodi:role="line" + id="tspan2997-2" + x="197.72444" + y="1189.9738" + style="font-size:32px;font-weight:bold;fill:#dd8a3d;fill-opacity:1;-inkscape-font-specification:Ubuntu Bold">Public</tspan></text> + <g + id="g8695-4" + transform="matrix(0.69032837,0,0,0.69032837,102.02122,263.35464)" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kune-intro-min.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/java/cc/kune/wspace/client/resources/userSpaceEnabled.png" + sodipodi:type="arc" + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#800000;stroke-width:1.48864591;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4961-0" + sodipodi:cx="90" + sodipodi:cy="32.362183" + sodipodi:rx="20" + sodipodi:ry="10" + d="m 110,32.362183 c 0,5.522847 -8.95431,10 -20,10 -11.045695,0 -20,-4.477153 -20,-10 0,-5.522848 8.954305,-10 20,-10 11.04569,0 20,4.477152 20,10 z" + transform="matrix(1.1754752,0,0,2.3509505,-73.660121,753.33034)" /> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/java/cc/kune/wspace/client/resources/userSpaceEnabled.png" + sodipodi:type="arc" + style="color:#000000;fill:#d45500;fill-opacity:1;stroke:#d45500;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4971-6" + sodipodi:cx="15" + sodipodi:cy="16.362183" + sodipodi:rx="1" + sodipodi:ry="1" + d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z" + transform="matrix(4.9493694,0,0,4.9493694,-42.107891,748.42974)" /> + </g> + <g + transform="matrix(0.69032837,0,0,0.69032837,30.270728,354.20632)" + id="g3297" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kune-intro-min.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <path + transform="matrix(1.1754752,0,0,2.3509505,30.276632,753.33034)" + d="m 110,32.362183 c 0,5.522847 -8.95431,10 -20,10 -11.045695,0 -20,-4.477153 -20,-10 0,-5.522848 8.954305,-10 20,-10 11.04569,0 20,4.477152 20,10 z" + sodipodi:ry="10" + sodipodi:rx="20" + sodipodi:cy="32.362183" + sodipodi:cx="90" + id="path3299" + style="color:#000000;fill:#aaeeff;fill-opacity:1;fill-rule:nonzero;stroke:#b3b3b3;stroke-width:1.48864591;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <path + sodipodi:nodetypes="cccccccc" + inkscape:connector-curvature="0" + id="path3301" + d="m 130.79962,807.50532 c -2.85339,0.78923 -5.20625,2.69048 -7.74114,4.12698 -1.45578,1.08139 -3.17371,4.03552 -1.21347,5.32414 1.55176,0.2611 2.79811,-1.05921 4.32566,-1.15498 1.78407,-0.4112 3.60556,-0.7363 5.29696,-1.46265 2.88934,-0.9105 2.88934,-0.9105 3.18467,-1.97638 0.14032,-1.60483 -1.00047,-3.09256 -2.07745,-4.18939 -0.49137,-0.40285 -1.11497,-0.78049 -1.77523,-0.66772 z" + style="color:#000000;fill:#2ca05a;fill-opacity:1;fill-rule:nonzero;stroke:#2ca05a;stroke-width:2.47468472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <path + sodipodi:nodetypes="cacccccccccc" + inkscape:connector-curvature="0" + id="path3303" + d="m 153.3922,823.22551 c -4.04703,2.06374 -8.81245,4.142 -10.56886,8.25203 -0.54013,1.26397 0.22272,2.75445 0.4124,4.10295 0.7708,1.43658 -1.11269,2.70312 -0.55672,4.14497 0.66534,1.49717 2.56652,1.27157 3.82727,0.79099 1.28493,-0.44158 -0.53582,-1.70575 0,0 0.58286,1.36335 5.36635,1.77935 6.80857,1.16016 1.38701,-0.50855 2.33091,-0.74837 2.99303,-1.90611 2.17102,-4.41676 3.23712,-9.41812 2.89588,-14.33661 -0.10641,-1.32539 -0.51397,-2.60792 -0.99259,-3.83098 -0.49507,-1.61389 -2.16711,0.0173 -2.82476,0.68071 -0.60256,0.42631 -1.2709,0.77633 -1.99422,0.94189 z" + style="color:#000000;fill:#2ca05a;fill-opacity:1;fill-rule:nonzero;stroke:#2ca05a;stroke-width:2.47468472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <path + sodipodi:nodetypes="cccccacccc" + style="color:#000000;fill:#2ca05a;fill-opacity:1;fill-rule:nonzero;stroke:#2ca05a;stroke-width:2.47468472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 121.52672,824.27304 c -2.3826,0.90534 -4.95654,1.52602 -7.13172,2.85353 -1.8032,1.51882 -1.57875,4.29287 -0.64391,6.22636 1.14716,2.47466 2.05723,5.06419 3.4281,7.43042 1.32587,1.74784 -0.0893,0.98747 1.52127,2.46832 0.45524,0.54208 3.2913,3.28282 4.94937,2.47469 0.82652,-0.40286 0.61983,-1.62095 0.54826,-2.70337 0.52083,-2.24499 -0.82476,-4.39163 -0.7175,-6.65278 -0.0579,-2.83898 0.49943,-5.64398 0.8377,-8.45265 0.19302,-1.55725 -0.68561,-4.455 -2.79157,-3.64452 z" + id="path3305" + inkscape:connector-curvature="0" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:none;stroke:#002255;stroke-width:1.48864591;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3307" + sodipodi:cx="90" + sodipodi:cy="32.362183" + sodipodi:rx="20" + sodipodi:ry="10" + d="m 110,32.362183 c 0,5.522847 -8.95431,10 -20,10 -11.045695,0 -20,-4.477153 -20,-10 0,-5.522848 8.954305,-10 20,-10 11.04569,0 20,4.477152 20,10 z" + transform="matrix(1.1754752,0,0,2.3509505,30.276632,753.33034)" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/java/cc/kune/wspace/client/resources/publicSpaceEnabled.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + </g> + <g + id="g8721-1" + transform="matrix(0.69032837,0,0,0.69032837,-66.264583,578.73873)" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kune-intro.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/java/cc/kune/wspace/client/resources/publicSpaceDisabled.png" + transform="matrix(1.1754752,0,0,2.3509505,30.940442,700.21488)" + d="m 110,32.362183 c 0,5.522847 -8.95431,10 -20,10 -11.045695,0 -20,-4.477153 -20,-10 0,-5.522848 8.954305,-10 20,-10 11.04569,0 20,4.477152 20,10 z" + sodipodi:ry="10" + sodipodi:rx="20" + sodipodi:cy="32.362183" + sodipodi:cx="90" + id="path3047-0" + style="color:#000000;fill:#d5e5ff;fill-opacity:1;fill-rule:nonzero;stroke:#b3b3b3;stroke-width:1.48864591;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/java/cc/kune/wspace/client/resources/publicSpaceDisabled.png" + sodipodi:nodetypes="cccccccc" + inkscape:connector-curvature="0" + id="path3129-3" + d="m 131.46342,754.38987 c -2.85339,0.78922 -5.20625,2.69047 -7.74114,4.12697 -1.45578,1.08139 -3.17371,4.03552 -1.21347,5.32414 1.55176,0.26111 2.79811,-1.05921 4.32566,-1.15498 1.78407,-0.4112 3.60556,-0.7363 5.29696,-1.46264 2.88934,-0.91051 2.88934,-0.91051 3.18467,-1.97638 0.14032,-1.60484 -1.00047,-3.09257 -2.07744,-4.1894 -0.49138,-0.40285 -1.11498,-0.78048 -1.77524,-0.66771 z" + style="color:#000000;fill:#87deaa;fill-opacity:1;fill-rule:nonzero;stroke:#87deaa;stroke-width:2.47468472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/java/cc/kune/wspace/client/resources/publicSpaceDisabled.png" + sodipodi:nodetypes="cacccccccccc" + inkscape:connector-curvature="0" + id="path4991-4" + d="m 154.056,770.13557 c -4.04703,2.06371 -8.81245,4.14198 -10.56886,8.252 -0.54013,1.26397 0.22272,2.75445 0.4124,4.10296 0.7708,1.43658 -1.11269,2.70312 -0.55672,4.14497 0.66534,1.49716 2.56652,1.27157 3.82727,0.79098 1.28493,-0.44158 -0.53582,-1.70574 0,0 0.58286,1.36336 5.36635,1.77935 6.80857,1.16016 1.38701,-0.50854 2.33091,-0.74836 2.99304,-1.90608 2.17101,-4.41678 3.23711,-9.41815 2.89587,-14.33663 -0.10641,-1.3254 -0.51397,-2.60792 -0.99259,-3.83099 -0.49507,-1.61389 -2.16711,0.0174 -2.82476,0.68074 -0.60256,0.42628 -1.2709,0.7763 -1.99422,0.94189 z" + style="color:#000000;fill:#87deaa;fill-opacity:1;fill-rule:nonzero;stroke:#87deaa;stroke-width:2.47468472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/java/cc/kune/wspace/client/resources/publicSpaceDisabled.png" + sodipodi:nodetypes="cccccacccc" + style="color:#000000;fill:#87deaa;fill-opacity:1;fill-rule:nonzero;stroke:#87deaa;stroke-width:2.47468472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 122.19052,771.15758 c -2.3826,0.90535 -4.95654,1.52602 -7.13172,2.85354 -1.8032,1.51881 -1.57875,4.29286 -0.64391,6.22635 1.14716,2.47467 2.05723,5.0642 3.42811,7.43042 1.32586,1.74785 -0.0893,0.98748 1.52126,2.46833 0.45524,0.54208 3.2913,3.28281 4.94937,2.47468 0.82652,-0.40286 0.61983,-1.62095 0.54826,-2.70337 0.52083,-2.24498 -0.82476,-4.39163 -0.7175,-6.65277 -0.0579,-2.83898 0.49944,-5.64399 0.8377,-8.45266 0.19303,-1.55724 -0.68561,-4.455 -2.79157,-3.64452 z" + id="path3125-0" + inkscape:connector-curvature="0" /> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/java/cc/kune/wspace/client/resources/publicSpaceDisabled.png" + sodipodi:type="arc" + style="color:#000000;fill:none;stroke:#b3b3b3;stroke-width:1.48864591;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3007-3" + sodipodi:cx="90" + sodipodi:cy="32.362183" + sodipodi:rx="20" + sodipodi:ry="10" + d="m 110,32.362183 c 0,5.522847 -8.95431,10 -20,10 -11.045695,0 -20,-4.477153 -20,-10 0,-5.522848 8.954305,-10 20,-10 11.04569,0 20,4.477152 20,10 z" + transform="matrix(1.1754752,0,0,2.3509505,30.940442,700.21488)" /> + <path + transform="matrix(1.1754752,0,0,2.3509505,30.940442,700.21488)" + d="m 110,32.362183 c 0,5.522847 -8.95431,10 -20,10 -11.045695,0 -20,-4.477153 -20,-10 0,-5.522848 8.954305,-10 20,-10 11.04569,0 20,4.477152 20,10 z" + sodipodi:ry="10" + sodipodi:rx="20" + sodipodi:cy="32.362183" + sodipodi:cx="90" + id="path3141-9" + style="color:#000000;fill:none;stroke:#b3b3b3;stroke-width:1.48864591;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/java/cc/kune/wspace/client/resources/publicSpaceDisabled.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + </g> + <text + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kune-intro-min.png" + xml:space="preserve" + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#dd8a3d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold" + x="152.85562" + y="893.62335" + id="text3250" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3252" + x="152.85562" + y="893.62335" + style="font-size:32px;font-weight:bold;fill:#dd8a3d;fill-opacity:1;-inkscape-font-specification:Ubuntu Bold">Work in collaboration</tspan></text> + <text + sodipodi:linespacing="125%" + id="text3254" + y="938.97327" + x="152.31161" + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#dd8a3d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold" + xml:space="preserve" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kune-intro-min.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"><tspan + style="font-size:32px;font-weight:bold;fill:#dd8a3d;fill-opacity:1;-inkscape-font-specification:Ubuntu Bold" + y="938.97327" + x="152.31161" + id="tspan3256" + sodipodi:role="line">And share with the rest</tspan></text> </g> </svg> Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -26,7 +26,6 @@ import cc.kune.core.shared.domain.RateResult; import cc.kune.core.shared.domain.TagCloudResult; import cc.kune.core.shared.domain.utils.StateToken; -import cc.kune.core.shared.dto.CommentDTO; import cc.kune.core.shared.dto.ContentSimpleDTO; import cc.kune.core.shared.dto.I18nLanguageDTO; import cc.kune.core.shared.dto.StateAbstractDTO; @@ -39,52 +38,47 @@ @RemoteServiceRelativePath("ContentService") public interface ContentService extends RemoteService { - void addAuthor(String userHash, StateToken token, String authorShortName) throws DefaultException; + void addAuthor(String userHash, StateToken token, String authorShortName) throws DefaultException; - CommentDTO addComment(String userHash, StateToken token, Long parentCommentId, String commentText) - throws DefaultException; + StateContentDTO addContent(String user, StateToken parentToken, String name, String typeId) + throws DefaultException; - CommentDTO addComment(String userHash, StateToken token, String commentText) throws DefaultException; + StateContainerDTO addFolder(String hash, StateToken parentToken, String typeId, String title) + throws DefaultException; - StateContentDTO addContent(String user, StateToken parentToken, String name, String typeId) throws DefaultException; + void addParticipant(String userHash, StateToken token, String participant) throws DefaultException; - StateContainerDTO addFolder(String hash, StateToken parentToken, String typeId, String title) - throws DefaultException; + StateContainerDTO addRoom(String user, StateToken parentToken, String name) throws DefaultException; - void addParticipant(String userHash, StateToken token, String participant) throws DefaultException; + StateContentDTO delContent(String userHash, StateToken token) throws DefaultException; - StateContainerDTO addRoom(String user, StateToken parentToken, String name) throws DefaultException; + StateAbstractDTO getContent(String userHash, StateToken token) throws DefaultException; - StateContentDTO delContent(String userHash, StateToken token) throws DefaultException; + TagCloudResult getSummaryTags(String userHash, StateToken groupToken) throws DefaultException; - StateAbstractDTO getContent(String userHash, StateToken token) throws DefaultException; + RateResult rateContent(String userHash, StateToken token, Double value) throws DefaultException; - TagCloudResult getSummaryTags(String userHash, StateToken groupToken) throws DefaultException; + void removeAuthor(String userHash, StateToken token, String authorShortName) throws DefaultException; - CommentDTO markCommentAsAbuse(String userHash, StateToken token, Long commentId) throws DefaultException; + StateAbstractDTO renameContainer(String userHash, StateToken token, String newName) + throws DefaultException; - RateResult rateContent(String userHash, StateToken token, Double value) throws DefaultException; + StateAbstractDTO renameContent(String userHash, StateToken token, String newName) + throws DefaultException; - void removeAuthor(String userHash, StateToken token, String authorShortName) throws DefaultException; + void save(String user, StateToken token, String content) throws DefaultException; - StateAbstractDTO renameContainer(String userHash, StateToken token, String newName) throws DefaultException; + ContentSimpleDTO setAsDefaultContent(String userHash, StateToken token); - StateAbstractDTO renameContent(String userHash, StateToken token, String newName) throws DefaultException; + I18nLanguageDTO setLanguage(String userHash, StateToken token, String languageCode) + throws DefaultException; - void save(String user, StateToken token, String content) throws DefaultException; + void setPublishedOn(String userHash, StateToken token, Date date) throws DefaultException; - ContentSimpleDTO setAsDefaultContent(String userHash, StateToken token); + StateAbstractDTO setStatus(String userHash, StateToken stateToken, ContentStatus status); - I18nLanguageDTO setLanguage(String userHash, StateToken token, String languageCode) throws DefaultException; + StateAbstractDTO setStatusAsAdmin(String userHash, StateToken stateToken, ContentStatus status); - void setPublishedOn(String userHash, StateToken token, Date date) throws DefaultException; + TagCloudResult setTags(String userHash, StateToken token, String tags) throws DefaultException; - StateAbstractDTO setStatus(String userHash, StateToken stateToken, ContentStatus status); - - StateAbstractDTO setStatusAsAdmin(String userHash, StateToken stateToken, ContentStatus status); - - TagCloudResult setTags(String userHash, StateToken token, String tags) throws DefaultException; - - CommentDTO voteComment(String userHash, StateToken token, Long commentId, boolean votePositive) - throws DefaultException; } Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -26,7 +26,6 @@ import cc.kune.core.shared.domain.RateResult; import cc.kune.core.shared.domain.TagCloudResult; import cc.kune.core.shared.domain.utils.StateToken; -import cc.kune.core.shared.dto.CommentDTO; import cc.kune.core.shared.dto.ContentSimpleDTO; import cc.kune.core.shared.dto.I18nLanguageDTO; import cc.kune.core.shared.dto.StateAbstractDTO; @@ -37,58 +36,57 @@ public interface ContentServiceAsync { - void addAuthor(String userHash, StateToken token, String authorShortName, AsyncCallback<Void> asyncCallback); + void addAuthor(String userHash, StateToken token, String authorShortName, + AsyncCallback<Void> asyncCallback); - void addComment(String userHash, StateToken token, Long parentCommentId, String commentText, - AsyncCallback<CommentDTO> asyncCallback); + void addContent(String user, StateToken parentToken, String name, String typeId, + AsyncCallback<StateContentDTO> callback); - void addComment(String userHash, StateToken token, String commentText, AsyncCallback<CommentDTO> asyncCallback); + void addFolder(String hash, StateToken parentToken, String title, String typeId, + AsyncCallback<StateContainerDTO> callback); - void addContent(String user, StateToken parentToken, String name, String typeId, - AsyncCallback<StateContentDTO> callback); + void addParticipant(String userHash, StateToken token, String authorShortName, + AsyncCallback<Void> asyncCallback) throws DefaultException; - void addFolder(String hash, StateToken parentToken, String title, String typeId, - AsyncCallback<StateContainerDTO> callback); + void addRoom(String user, StateToken parentToken, String name, + AsyncCallback<StateContainerDTO> callback); - void addParticipant(String userHash, StateToken token, String authorShortName, AsyncCallback<Void> asyncCallback) - throws DefaultException; + void delContent(String userHash, StateToken token, AsyncCallback<StateContentDTO> asyncCallback); - void addRoom(String user, StateToken parentToken, String name, AsyncCallback<StateContainerDTO> callback); + void getContent(String user, StateToken newState, AsyncCallback<StateAbstractDTO> callback); - void delContent(String userHash, StateToken token, AsyncCallback<StateContentDTO> asyncCallback); + void getSummaryTags(String userHash, StateToken groupToken, AsyncCallback<TagCloudResult> asyncCallback); - void getContent(String user, StateToken newState, AsyncCallback<StateAbstractDTO> callback); + void rateContent(String userHash, StateToken token, Double value, + AsyncCallback<RateResult> asyncCallback); - void getSummaryTags(String userHash, StateToken groupToken, AsyncCallback<TagCloudResult> asyncCallback); + void removeAuthor(String userHash, StateToken token, String authorShortName, + AsyncCallback<Void> asyncCallback); - void markCommentAsAbuse(String userHash, StateToken token, Long commentId, AsyncCallback<CommentDTO> asyncCallback); + void renameContainer(String userHash, StateToken token, String newName, + AsyncCallback<StateAbstractDTO> asyncCallback); - void rateContent(String userHash, StateToken token, Double value, AsyncCallback<RateResult> asyncCallback); + void renameContent(String userHash, StateToken token, String newName, + AsyncCallback<StateAbstractDTO> asyncCallback); - void removeAuthor(String userHash, StateToken token, String authorShortName, AsyncCallback<Void> asyncCallback); + void save(String user, StateToken token, String content, AsyncCallback<Void> asyncCallback); - void renameContainer(String userHash, StateToken token, String newName, - AsyncCallback<StateAbstractDTO> asyncCallback); + void setAsDefaultContent(String userHash, StateToken token, + AsyncCallback<ContentSimpleDTO> asyncCallback); - void renameContent(String userHash, StateToken token, String newName, AsyncCallback<StateAbstractDTO> asyncCallback); + void setLanguage(String userHash, StateToken token, String languageCode, + AsyncCallback<I18nLanguageDTO> asyncCallback); - void save(String user, StateToken token, String content, AsyncCallback<Void> asyncCallback); + void setPublishedOn(String userHash, StateToken token, Date publishedOn, + AsyncCallback<Void> asyncCallback); - void setAsDefaultContent(String userHash, StateToken token, AsyncCallback<ContentSimpleDTO> asyncCallback); + void setStatus(String userHash, StateToken stateToken, ContentStatus status, + AsyncCallback<StateAbstractDTO> asyncCallback); - void setLanguage(String userHash, StateToken token, String languageCode, - AsyncCallback<I18nLanguageDTO> asyncCallback); + void setStatusAsAdmin(String userHash, StateToken stateToken, ContentStatus status, + AsyncCallback<StateAbstractDTO> asyncCallback); - void setPublishedOn(String userHash, StateToken token, Date publishedOn, AsyncCallback<Void> asyncCallback); + void setTags(String userHash, StateToken token, String tags, + AsyncCallback<TagCloudResult> asyncCallback); - void setStatus(String userHash, StateToken stateToken, ContentStatus status, - AsyncCallback<StateAbstractDTO> asyncCallback); - - void setStatusAsAdmin(String userHash, StateToken stateToken, ContentStatus status, - AsyncCallback<StateAbstractDTO> asyncCallback); - - void setTags(String userHash, StateToken token, String tags, AsyncCallback<TagCloudResult> asyncCallback); - - void voteComment(String userHash, StateToken token, Long commentId, boolean votePositive, - AsyncCallback<CommentDTO> asyncCallback); } Modified: trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -38,8 +38,6 @@ import cc.kune.core.server.auth.AuthorizatedMethodInterceptor; import cc.kune.core.server.auth.SessionService; import cc.kune.core.server.auth.SessionServiceDefault; -import cc.kune.core.server.content.CommentManager; -import cc.kune.core.server.content.CommentManagerDefault; import cc.kune.core.server.content.ContainerManager; import cc.kune.core.server.content.ContainerManagerDefault; import cc.kune.core.server.content.ContentManager; @@ -95,7 +93,6 @@ import cc.kune.core.server.xmpp.XmppManager; import cc.kune.core.server.xmpp.XmppManagerDefault; import cc.kune.core.shared.i18n.I18nTranslationService; -import cc.kune.domain.Comment; import cc.kune.domain.SocialNetwork; import cc.kune.wave.server.KuneWaveManager; import cc.kune.wave.server.KuneWaveManagerDefault; @@ -104,80 +101,78 @@ import com.google.inject.matcher.Matchers; public class PlatformServerModule extends AbstractExtendedModule { - private void bindFinders() { - // http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/Injec... - // (...) Just-in-time bindings created for child injectors will be - // created in an ancestor injector whenever possible (...) - // (This fails with finders, then we make explicit bindings) + private void bindFinders() { + // http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/Injec... + // (...) Just-in-time bindings created for child injectors will be + // created in an ancestor injector whenever possible (...) + // (This fails with finders, then we make explicit bindings) - bind(SocialNetwork.class); - bind(Comment.class); - } + bind(SocialNetwork.class); + } - private void bindManagers() { - bind(UserManager.class).to(UserManagerDefault.class); - bind(GroupManager.class).to(GroupManagerDefault.class); - bind(ContentManager.class).to(ContentManagerDefault.class); - bind(ToolConfigurationManager.class).to(ToolConfigurationManagerDefault.class); - bind(ContainerManager.class).to(ContainerManagerDefault.class); - bind(LicenseManager.class).to(LicenseManagerDefault.class); - bind(SocialNetworkManager.class).to(SocialNetworkManagerDefault.class); - bind(XmppManager.class).to(XmppManagerDefault.class); - bind(RateManager.class).to(RateManagerDefault.class); - bind(I18nCountryManager.class).to(I18nCountryManagerDefault.class); - bind(I18nLanguageManager.class).to(I18nLanguageManagerDefault.class); - bind(I18nTranslationManager.class).to(I18nTranslationManagerDefault.class); - bind(TagManager.class).to(TagManagerDefault.class); - bind(TagUserContentManager.class).to(TagUserContentManagerDefault.class); - bind(CommentManager.class).to(CommentManagerDefault.class); - bind(FileManager.class).to(FileManagerDefault.class); - bind(ExtMediaDescripManager.class).to(ExtMediaDescripManagerDefault.class); - bind(KuneWaveManager.class).to(KuneWaveManagerDefault.class); - } + private void bindManagers() { + bind(UserManager.class).to(UserManagerDefault.class); + bind(GroupManager.class).to(GroupManagerDefault.class); + bind(ContentManager.class).to(ContentManagerDefault.class); + bind(ToolConfigurationManager.class).to(ToolConfigurationManagerDefault.class); + bind(ContainerManager.class).to(ContainerManagerDefault.class); + bind(LicenseManager.class).to(LicenseManagerDefault.class); + bind(SocialNetworkManager.class).to(SocialNetworkManagerDefault.class); + bind(XmppManager.class).to(XmppManagerDefault.class); + bind(RateManager.class).to(RateManagerDefault.class); + bind(I18nCountryManager.class).to(I18nCountryManagerDefault.class); + bind(I18nLanguageManager.class).to(I18nLanguageManagerDefault.class); + bind(I18nTranslationManager.class).to(I18nTranslationManagerDefault.class); + bind(TagManager.class).to(TagManagerDefault.class); + bind(TagUserContentManager.class).to(TagUserContentManagerDefault.class); + bind(FileManager.class).to(FileManagerDefault.class); + bind(ExtMediaDescripManager.class).to(ExtMediaDescripManagerDefault.class); + bind(KuneWaveManager.class).to(KuneWaveManagerDefault.class); + } - private void bindRPC() { - bind(SiteService.class).to(SiteRPC.class); - bind(GroupService.class).to(GroupRPC.class); - bind(ContentService.class).to(ContentRPC.class); - bind(UserService.class).to(UserRPC.class); - bind(SocialNetworkService.class).to(SocialNetworkRPC.class); - bind(I18nService.class).to(I18nRPC.class); - } + private void bindRPC() { + bind(SiteService.class).to(SiteRPC.class); + bind(GroupService.class).to(GroupRPC.class); + bind(ContentService.class).to(ContentRPC.class); + bind(UserService.class).to(UserRPC.class); + bind(SocialNetworkService.class).to(SocialNetworkRPC.class); + bind(I18nService.class).to(I18nRPC.class); + } - private void bindServices() { - bind(UserInfoService.class).to(UserInfoServiceDefault.class); - bind(CreationService.class).to(CreationServiceDefault.class); - bind(AccessRightsService.class).to(AccessRightsServiceDefault.class); - bind(AccessService.class).to(AccessServiceDefault.class); - bind(FinderService.class).to(FinderServiceDefault.class); - bind(StateService.class).to(StateServiceDefault.class); - bind(I18nTranslationService.class).to(I18nTranslationServiceDefault.class); - bind(SessionService.class).to(SessionServiceDefault.class); - } + private void bindServices() { + bind(UserInfoService.class).to(UserInfoServiceDefault.class); + bind(CreationService.class).to(CreationServiceDefault.class); + bind(AccessRightsService.class).to(AccessRightsServiceDefault.class); + bind(AccessService.class).to(AccessServiceDefault.class); + bind(FinderService.class).to(FinderServiceDefault.class); + bind(StateService.class).to(StateServiceDefault.class); + bind(I18nTranslationService.class).to(I18nTranslationServiceDefault.class); + bind(SessionService.class).to(SessionServiceDefault.class); + } - @Override - protected void configure() { - // install(PersistService.usingJpa().across(UnitOfWork.TRANSACTION).buildModule()); - bind(KunePersistenceService.class); + @Override + protected void configure() { + // install(PersistService.usingJpa().across(UnitOfWork.TRANSACTION).buildModule()); + bind(KunePersistenceService.class); - bindFinders(); - bindManagers(); - bindRPC(); - bindServices(); - bind(KuneProperties.class).to(KunePropertiesDefault.class); - bind(Mapper.class).to(DozerMapper.class); - bind(ServerToolRegistry.class); - // bind(FileUploadManager.class).in(ServletScopes.REQUEST); - bind(FileUploadManager.class); - bind(FileDownloadManager.class); - bind(EntityLogoUploadManager.class); - bind(EntityLogoDownloadManager.class); - bind(ParticipantUtils.class); + bindFinders(); + bindManagers(); + bindRPC(); + bindServices(); + bind(KuneProperties.class).to(KunePropertiesDefault.class); + bind(Mapper.class).to(DozerMapper.class); + bind(ServerToolRegistry.class); + // bind(FileUploadManager.class).in(ServletScopes.REQUEST); + bind(FileUploadManager.class); + bind(FileDownloadManager.class); + bind(EntityLogoUploadManager.class); + bind(EntityLogoDownloadManager.class); + bind(ParticipantUtils.class); - bindInterceptor(Matchers.any(), Matchers.annotatedWith(Authenticated.class), - outermostCall(new AuthenticatedMethodInterceptor())); - bindInterceptor(Matchers.any(), Matchers.annotatedWith(Authorizated.class), - outermostCall(new AuthorizatedMethodInterceptor())); - } + bindInterceptor(Matchers.any(), Matchers.annotatedWith(Authenticated.class), + outermostCall(new AuthenticatedMethodInterceptor())); + bindInterceptor(Matchers.any(), Matchers.annotatedWith(Authorizated.class), + outermostCall(new AuthorizatedMethodInterceptor())); + } } Modified: trunk/src/main/java/cc/kune/core/server/access/FinderService.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/access/FinderService.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/core/server/access/FinderService.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -19,10 +19,8 @@ */ package cc.kune.core.server.access; - import cc.kune.core.client.errors.DefaultException; import cc.kune.core.shared.domain.utils.StateToken; -import cc.kune.domain.Comment; import cc.kune.domain.Container; import cc.kune.domain.Content; import cc.kune.domain.Group; @@ -31,18 +29,16 @@ public interface FinderService { - Comment getComment(Long commentId) throws DefaultException; + Content getContent(Long contentId) throws DefaultException; - Content getContent(Long contentId) throws DefaultException; + Content getContent(StateToken token, Group defaultGroup) throws DefaultException; - Content getContent(StateToken token, Group defaultGroup) throws DefaultException; + Container getFolder(Long folderId) throws DefaultException; - Container getFolder(Long folderId) throws DefaultException; + Rate getRate(User user, Content content); - Rate getRate(User user, Content content); + Double getRateAvg(Content content); - Double getRateAvg(Content content); + Long getRateByUsers(Content content); - Long getRateByUsers(Content content); - } Modified: trunk/src/main/java/cc/kune/core/server/access/FinderServiceDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/access/FinderServiceDefault.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/core/server/access/FinderServiceDefault.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -22,19 +22,16 @@ import javax.persistence.NoResultException; import javax.persistence.PersistenceException; - import cc.kune.core.client.errors.ContentNotFoundException; import cc.kune.core.client.errors.DefaultException; import cc.kune.core.client.errors.GroupNotFoundException; import cc.kune.core.client.errors.NoDefaultContentException; import cc.kune.core.client.errors.ToolNotFoundException; -import cc.kune.core.server.content.CommentManager; import cc.kune.core.server.content.ContainerManager; import cc.kune.core.server.content.ContentManager; import cc.kune.core.server.manager.GroupManager; import cc.kune.core.server.manager.RateManager; import cc.kune.core.shared.domain.utils.StateToken; -import cc.kune.domain.Comment; import cc.kune.domain.Container; import cc.kune.domain.Content; import cc.kune.domain.Group; @@ -46,150 +43,147 @@ @Singleton public class FinderServiceDefault implements FinderService { - private final GroupManager groupManager; - private final ContentManager contentManager; - private final ContainerManager containerManager; - private final RateManager rateManager; - private final CommentManager commentManager; + private final ContainerManager containerManager; + private final ContentManager contentManager; + private final GroupManager groupManager; + private final RateManager rateManager; - @Inject - public FinderServiceDefault(final GroupManager groupManager, final ContainerManager containerManager, - final ContentManager contentManager, final RateManager rateManager, final CommentManager commentManager) { - this.groupManager = groupManager; - this.containerManager = containerManager; - this.contentManager = contentManager; - this.rateManager = rateManager; - this.commentManager = commentManager; - } + @Inject + public FinderServiceDefault(final GroupManager groupManager, final ContainerManager containerManager, + final ContentManager contentManager, final RateManager rateManager) { + this.groupManager = groupManager; + this.containerManager = containerManager; + this.contentManager = contentManager; + this.rateManager = rateManager; + } - public Long checkAndParse(final String s) throws ContentNotFoundException { - if (s != null) { - try { - return Long.parseLong(s); - } catch (final NumberFormatException e) { - throw new ContentNotFoundException(); - } - } - return null; + public Long checkAndParse(final String s) throws ContentNotFoundException { + if (s != null) { + try { + return Long.parseLong(s); + } catch (final NumberFormatException e) { + throw new ContentNotFoundException(); + } } + return null; + } - public Comment getComment(final Long commentId) throws ContentNotFoundException { - try { - return commentManager.find(commentId); - } catch (final PersistenceException e) { - throw new ContentNotFoundException(); - } + private Content findByContentReference(final String groupName, final String toolName, + final Long folderId, final Long contentId) throws ContentNotFoundException { + final Content content = contentManager.find(contentId); + if (content == null) { + throw new ContentNotFoundException(); } + final Container container = content.getContainer(); - public Content getContent(final Long contentId) throws ContentNotFoundException { - try { - return contentManager.find(contentId); - } catch (final PersistenceException e) { - throw new ContentNotFoundException(); - } + if (!container.getId().equals(folderId)) { + throw new ContentNotFoundException(); } + if (!container.getToolName().equals(toolName)) { + throw new ContentNotFoundException(); + } + if (!container.getOwner().getShortName().equals(groupName)) { + throw new ContentNotFoundException(); + } + return content; + } - public Content getContent(final StateToken token, final Group defaultGroup) throws DefaultException { - final Long contentId = checkAndParse(token.getDocument()); - final Long folderId = checkAndParse(token.getFolder()); - - String group = token.getGroup(); - if (token.hasAll()) { - return findByContentReference(group, token.getTool(), folderId, contentId); - } else if (token.hasGroupToolAndFolder()) { - return findByFolderReference(group, folderId); - } else if (token.hasGroupAndTool()) { - return findByRootOnGroup(group, token.getTool()); - } else if (token.hasGroup()) { - return findDefaultContentOfGroup(group); - } else if (token.hasNothing()) { - return findDefaultContentOfGroup(defaultGroup); - } else { - throw new ContentNotFoundException(); - } + private Content findByFolderReference(final String groupName, final Long folderId) { + final Container container = containerManager.find(folderId); + if (container == null) { + throw new ContentNotFoundException(); + } else { + return generateFolderFakeContent(container); } + } - public Container getFolder(final Long folderId) throws ContentNotFoundException { - try { - return containerManager.find(folderId); - } catch (final PersistenceException e) { - throw new ContentNotFoundException(); - } + private Content findByRootOnGroup(final String groupName, final String toolName) + throws DefaultException { + try { + final Group group = groupManager.findByShortName(groupName); + if (!group.existToolConfig(toolName)) { + throw new ToolNotFoundException(); + } + final Container container = group.getRoot(toolName); + return generateFolderFakeContent(container); + } catch (final NoResultException e) { + throw new GroupNotFoundException(); } + } - public Rate getRate(final User user, final Content content) { - return rateManager.find(user, content); + private Content findDefaultContentOfGroup(final Group group) { + final Content defaultContent = group.getDefaultContent(); + if (defaultContent == null) { + throw new NoDefaultContentException(); + } else { + return defaultContent; } + } - public Double getRateAvg(final Content content) { + private Content findDefaultContentOfGroup(final String groupName) throws GroupNotFoundException { + final Group group = groupManager.findByShortName(groupName); + return findDefaultContentOfGroup(group); + } - return rateManager.getRateAvg(content); - } + private Content generateFolderFakeContent(final Container container) { + final Content content = new Content(); + content.setContainer(container); + return content; + } - public Long getRateByUsers(final Content content) { - return rateManager.getRateByUsers(content); + @Override + public Content getContent(final Long contentId) throws ContentNotFoundException { + try { + return contentManager.find(contentId); + } catch (final PersistenceException e) { + throw new ContentNotFoundException(); } + } - private Content findByContentReference(final String groupName, final String toolName, final Long folderId, - final Long contentId) throws ContentNotFoundException { - final Content content = contentManager.find(contentId); - if (content == null) { - throw new ContentNotFoundException(); - } - final Container container = content.getContainer(); + @Override + public Content getContent(final StateToken token, final Group defaultGroup) throws DefaultException { + final Long contentId = checkAndParse(token.getDocument()); + final Long folderId = checkAndParse(token.getFolder()); - if (!container.getId().equals(folderId)) { - throw new ContentNotFoundException(); - } - if (!container.getToolName().equals(toolName)) { - throw new ContentNotFoundException(); - } - if (!container.getOwner().getShortName().equals(groupName)) { - throw new ContentNotFoundException(); - } - return content; + final String group = token.getGroup(); + if (token.hasAll()) { + return findByContentReference(group, token.getTool(), folderId, contentId); + } else if (token.hasGroupToolAndFolder()) { + return findByFolderReference(group, folderId); + } else if (token.hasGroupAndTool()) { + return findByRootOnGroup(group, token.getTool()); + } else if (token.hasGroup()) { + return findDefaultContentOfGroup(group); + } else if (token.hasNothing()) { + return findDefaultContentOfGroup(defaultGroup); + } else { + throw new ContentNotFoundException(); } + } - private Content findByFolderReference(final String groupName, final Long folderId) { - final Container container = containerManager.find(folderId); - if (container == null) { - throw new ContentNotFoundException(); - } else { - return generateFolderFakeContent(container); - } + @Override + public Container getFolder(final Long folderId) throws ContentNotFoundException { + try { + return containerManager.find(folderId); + } catch (final PersistenceException e) { + throw new ContentNotFoundException(); } + } - private Content findByRootOnGroup(final String groupName, final String toolName) throws DefaultException { - try { - final Group group = groupManager.findByShortName(groupName); - if (!group.existToolConfig(toolName)) { - throw new ToolNotFoundException(); - } - final Container container = group.getRoot(toolName); - return generateFolderFakeContent(container); - } catch (final NoResultException e) { - throw new GroupNotFoundException(); - } - } + @Override + public Rate getRate(final User user, final Content content) { + return rateManager.find(user, content); + } - private Content findDefaultContentOfGroup(final Group group) { - final Content defaultContent = group.getDefaultContent(); - if (defaultContent == null) { - throw new NoDefaultContentException(); - } else { - return defaultContent; - } - } + @Override + public Double getRateAvg(final Content content) { - private Content findDefaultContentOfGroup(final String groupName) throws GroupNotFoundException { - final Group group = groupManager.findByShortName(groupName); - return findDefaultContentOfGroup(group); - } + return rateManager.getRateAvg(content); + } - private Content generateFolderFakeContent(final Container container) { - final Content content = new Content(); - content.setContainer(container); - return content; - } + @Override + public Long getRateByUsers(final Content content) { + return rateManager.getRateByUsers(content); + } } Deleted: trunk/src/main/java/cc/kune/core/server/content/CommentManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/content/CommentManager.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/core/server/content/CommentManager.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -1,38 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - \*/ -package cc.kune.core.server.content; - - -import cc.kune.core.client.errors.DefaultException; -import cc.kune.core.server.manager.Manager; -import cc.kune.domain.Comment; -import cc.kune.domain.User; - -public interface CommentManager extends Manager<Comment, Long> { - - Comment addComment(User author, Long contentId, String commentText) throws DefaultException; - - Comment addComment(User author, Long contentId, String commentText, Long commentParentId) throws DefaultException; - - Comment markAsAbuse(User informer, Long contentId, Long commentId) throws DefaultException; - - Comment vote(User voter, Long contentId, Long commentId, boolean votePositive) throws DefaultException; - -} Deleted: trunk/src/main/java/cc/kune/core/server/content/CommentManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/content/CommentManagerDefault.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/core/server/content/CommentManagerDefault.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -1,98 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - \*/ -package cc.kune.core.server.content; - -import javax.persistence.EntityManager; - - -import cc.kune.core.client.errors.ContentNotFoundException; -import cc.kune.core.client.errors.DefaultException; -import cc.kune.core.server.access.FinderService; -import cc.kune.core.server.manager.impl.DefaultManager; -import cc.kune.domain.Comment; -import cc.kune.domain.Content; -import cc.kune.domain.User; - -import com.google.inject.Inject; -import com.google.inject.Provider; -import com.google.inject.Singleton; - -@Singleton -public class CommentManagerDefault extends DefaultManager<Comment, Long> implements CommentManager { - - private final FinderService finder; - - @Inject - public CommentManagerDefault(final Provider<EntityManager> provider, final FinderService finder) { - super(provider, Comment.class); - this.finder = finder; - } - - public Comment addComment(final User author, final Long contentId, final String commentText) - throws DefaultException { - Comment comment = createComment(author, commentText, contentId); - return persist(comment); - } - - public Comment addComment(final User author, final Long contentId, final String commentText, - final Long commentParentId) throws DefaultException { - Comment comment = createComment(author, commentText, contentId); - Comment parent = finder.getComment(commentParentId); - comment.setParent(parent); - return persist(comment); - } - - public Comment markAsAbuse(final User informer, final Long contentId, final Long commentId) throws DefaultException { - Comment comment = finder.getComment(commentId); - checkCommentContent(contentId, comment); - comment.addAbuseInformer(informer); - return persist(comment); - } - - public Comment vote(final User voter, final Long contentId, final Long commentId, final boolean votePositive) - throws DefaultException { - Comment comment = finder.getComment(commentId); - checkCommentContent(contentId, comment); - if (votePositive) { - comment.addPositiveVoter(voter); - return persist(comment); - } else { - comment.addNegativeVoter(voter); - return persist(comment); - } - } - - private void checkCommentContent(final Long contentId, final Comment comment) throws ContentNotFoundException { - if (!comment.getContent().getId().equals(contentId)) { - throw new ContentNotFoundException(); - } - } - - private Comment createComment(final User author, final String commentText, final Long contentId) - throws DefaultException { - final Content content = finder.getContent(contentId); - Comment comment = new Comment(); - comment.setAuthor(author); - comment.setText(commentText); - comment.setContent(content); - return comment; - } - -} Modified: trunk/src/main/java/cc/kune/core/server/content/ContentManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/content/ContentManager.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/core/server/content/ContentManager.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -33,56 +33,59 @@ public interface ContentManager extends Manager<Content, Long> { - String[] DEF_GLOBAL_SEARCH_FIELDS = new String[] { "authors.name", "authors.shortName", "container.name", - "language.code", "language.englishName", "language.nativeName", "lastRevision.body", "lastRevision.title" }; + String[] DEF_GLOBAL_SEARCH_FIELDS = new String[] { "authors.name", "authors.shortName", + "container.name", "language.code", "language.englishName", "language.nativeName", + "lastRevision.body", "lastRevision.title" }; - String[] DEF_GLOBAL_SEARCH_FIELDS_WITH_MIME = new String[] { "authors.name", "authors.shortName", "container.name", - "language.code", "language.englishName", "language.nativeName", "lastRevision.body", "lastRevision.title", - "mimeType.mimetype" }; + String[] DEF_GLOBAL_SEARCH_FIELDS_WITH_MIME = new String[] { "authors.name", "authors.shortName", + "container.name", "language.code", "language.englishName", "language.nativeName", + "lastRevision.body", "lastRevision.title", "mimeType.mimetype" }; - String[] DEF_GROUP_SEARCH_FIELDS_WITH_MIME = new String[] { "lastRevision.title", "container.owner_shortName", - "mimeType.mimetype" }; + String[] DEF_GROUP_SEARCH_FIELDS_WITH_MIME = new String[] { "lastRevision.title", + "container.owner_shortName", "mimeType.mimetype" }; - void addAuthor(User user, Long contentId, String authorShortName) throws DefaultException; + void addAuthor(User user, Long contentId, String authorShortName) throws DefaultException; - void addParticipant(User user, Long contentId, String participant); + void addParticipant(User user, Long contentId, String participant); - Content createContent(String title, String body, User author, Container container, String typeId); + Content createContent(String title, String body, User author, Container container, String typeId); - boolean findIfExistsTitle(Container container, String title); + boolean findIfExistsTitle(Container container, String title); - Double getRateAvg(Content content); + Double getRateAvg(Content content); - Long getRateByUsers(Content content); + Long getRateByUsers(Content content); - Double getRateContent(User user, Content content); + Double getRateContent(User user, Content content); - RateResult rateContent(User rater, Long contentId, Double value) throws DefaultException; + RateResult rateContent(User rater, Long contentId, Double value) throws DefaultException; - void removeAuthor(User user, Long contentId, String authorShortName) throws DefaultException; + void removeAuthor(User user, Long contentId, String authorShortName) throws DefaultException; - Content renameContent(User user, Long contentId, String newName) throws DefaultException; + Content renameContent(User user, Long contentId, String newName) throws DefaultException; - Content save(User user, Content content); + Content save(User user, Content content); - Content save(User editor, Content content, String body); + Content save(User editor, Content content, String body); - SearchResult<Content> search(String search); + SearchResult<Content> search(String search); - SearchResult<Content> search(String search, Integer firstResult, Integer maxResults); + SearchResult<Content> search(String search, Integer firstResult, Integer maxResults); - SearchResult<Content> searchMime(String search, Integer firstResult, Integer maxResults, String group, - String mimetype); + SearchResult<Content> searchMime(String search, Integer firstResult, Integer maxResults, String group, + String mimetype); - SearchResult<?> searchMime(String search, Integer firstResult, Integer maxResults, String group, String mimetype, - String mimetype2); + SearchResult<?> searchMime(String search, Integer firstResult, Integer maxResults, String group, + String mimetype, String mimetype2); - I18nLanguage setLanguage(User user, Long contentId, String languageCode) throws DefaultException; + I18nLanguage setLanguage(User user, Long contentId, String languageCode) throws DefaultException; - void setPublishedOn(User user, Long contentId, Date publishedOn) throws DefaultException; + void setModifiedOn(Content content, long lastModifiedTime); - Content setStatus(Long contentId, ContentStatus contentStatus); + void setPublishedOn(User user, Long contentId, Date publishedOn) throws DefaultException; - void setTags(User user, Long contentId, String tags) throws DefaultException; + Content setStatus(Long contentId, ContentStatus contentStatus); + void setTags(User user, Long contentId, String tags) throws DefaultException; + } Modified: trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -113,7 +113,6 @@ @Override public Content createContent(final String title, final String body, final User author, final Container container, final String typeId) { - String contentBody; FilenameUtils.checkBasicFilename(title); final String newtitle = findInexistentTitle(container, title); final Content newContent = new Content(); @@ -128,11 +127,10 @@ if (newContent.isWave()) { final WaveRef waveRef = kuneWaveManager.createWave(newtitle, body, participantUtils.of(author.getShortName())); - contentBody = JavaWaverefEncoder.encodeToUriPathSegment(waveRef); - } else { - contentBody = body; + newContent.setWaveId(JavaWaverefEncoder.encodeToUriPathSegment(waveRef)); + newContent.setModifiedOn((new Date()).getTime()); } - revision.setBody(contentBody); + revision.setBody(body); newContent.addRevision(revision); return persist(newContent); } @@ -179,7 +177,7 @@ private WaveRef getWaveRef(final Content content) { try { - return JavaWaverefEncoder.decodeWaveRefFromPath(String.valueOf(content.getLastRevision().getBody())); + return JavaWaverefEncoder.decodeWaveRefFromPath(String.valueOf(content.getWaveId())); } catch (final InvalidWaveRefException e) { throw new DefaultException("Error getting the wave"); } @@ -297,6 +295,12 @@ } @Override + public void setModifiedOn(final Content content, final long lastModifiedTime) { + content.setModifiedOn(lastModifiedTime); + persist(content); + } + + @Override public void setPublishedOn(final User user, final Long contentId, final Date publishedOn) throws DefaultException { final Content content = finder.getContent(contentId); Modified: trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -36,7 +36,6 @@ import cc.kune.core.server.auth.ActionLevel; import cc.kune.core.server.auth.Authenticated; import cc.kune.core.server.auth.Authorizated; -import cc.kune.core.server.content.CommentManager; import cc.kune.core.server.content.ContainerManager; import cc.kune.core.server.content.ContentManager; import cc.kune.core.server.content.ContentUtils; @@ -54,7 +53,6 @@ import cc.kune.core.shared.domain.TagCloudResult; import cc.kune.core.shared.domain.utils.AccessRights; import cc.kune.core.shared.domain.utils.StateToken; -import cc.kune.core.shared.dto.CommentDTO; import cc.kune.core.shared.dto.ContentSimpleDTO; import cc.kune.core.shared.dto.I18nLanguageDTO; import cc.kune.core.shared.dto.StateAbstractDTO; @@ -62,7 +60,6 @@ import cc.kune.core.shared.dto.StateContentDTO; import cc.kune.core.shared.dto.StateNoContentDTO; import cc.kune.domain.AccessLists; -import cc.kune.domain.Comment; import cc.kune.domain.Container; import cc.kune.domain.Content; import cc.kune.domain.Group; @@ -75,448 +72,404 @@ @Singleton public class ContentRPC implements ContentService, RPC { - private final AccessService accessService; - private final CommentManager commentManager; - private final ContainerManager containerManager; - private final ContentManager contentManager; - private final CreationService creationService; - private final FinderService finderService; - private final GroupManager groupManager; - private final Mapper mapper; - private final AccessRightsService rightsService; - private final StateService stateService; - private final TagUserContentManager tagManager; - private final Provider<UserSession> userSessionProvider; - private final XmppManager xmppManager; + private final AccessService accessService; + private final ContainerManager containerManager; + private final ContentManager contentManager; + private final CreationService creationService; + private final FinderService finderService; + private final GroupManager groupManager; + private final Mapper mapper; + private final AccessRightsService rightsService; + private final StateService stateService; + private final TagUserContentManager tagManager; + private final Provider<UserSession> userSessionProvider; + private final XmppManager xmppManager; - @Inject - public ContentRPC(final FinderService finderService, final Provider<UserSession> userSessionProvider, - final AccessService accessService, final AccessRightsService rightsService, - final StateService stateService, final CreationService creationService, final GroupManager groupManager, - final XmppManager xmppManager, final ContentManager contentManager, - final ContainerManager containerManager, final TagUserContentManager tagManager, - final CommentManager commentManager, final Mapper mapper) { - this.finderService = finderService; - this.userSessionProvider = userSessionProvider; - this.accessService = accessService; - this.rightsService = rightsService; - this.stateService = stateService; - this.creationService = creationService; - this.groupManager = groupManager; - this.xmppManager = xmppManager; - this.contentManager = contentManager; - this.containerManager = containerManager; - this.tagManager = tagManager; - this.commentManager = commentManager; - this.mapper = mapper; - } + @Inject + public ContentRPC(final FinderService finderService, final Provider<UserSession> userSessionProvider, + final AccessService accessService, final AccessRightsService rightsService, + final StateService stateService, final CreationService creationService, + final GroupManager groupManager, final XmppManager xmppManager, + final ContentManager contentManager, final ContainerManager containerManager, + final TagUserContentManager tagManager, final Mapper mapper) { + this.finderService = finderService; + this.userSessionProvider = userSessionProvider; + this.accessService = accessService; + this.rightsService = rightsService; + this.stateService = stateService; + this.creationService = creationService; + this.groupManager = groupManager; + this.xmppManager = xmppManager; + this.contentManager = contentManager; + this.containerManager = containerManager; + this.tagManager = tagManager; + this.mapper = mapper; + } - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) - @Transactional - public void addAuthor(final String userHash, final StateToken token, final String authorShortName) - throws DefaultException { - final Long contentId = ContentUtils.parseId(token.getDocument()); - final User user = getCurrentUser(); - contentManager.addAuthor(user, contentId, authorShortName); - } + @Override + @Authenticated + @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) + @Transactional + public void addAuthor(final String userHash, final StateToken token, final String authorShortName) + throws DefaultException { + final Long contentId = ContentUtils.parseId(token.getDocument()); + final User user = getCurrentUser(); + contentManager.addAuthor(user, contentId, authorShortName); + } - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Viewer) - @Transactional - public CommentDTO addComment(final String userHash, final StateToken token, final Long parentCommentId, - final String commentText) throws DefaultException { - final User author = getCurrentUser(); - final Long contentId = ContentUtils.parseId(token.getDocument()); - final Comment comment = commentManager.addComment(author, contentId, commentText, parentCommentId); - return mapper.map(comment, CommentDTO.class); - } + @Override + @Authenticated + @Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor, mustCheckMembership = false) + @Transactional + public StateContentDTO addContent(final String userHash, final StateToken parentToken, + final String title, final String typeId) throws DefaultException { + return createContent(parentToken, title, typeId); + } - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Viewer) - @Transactional - public CommentDTO addComment(final String userHash, final StateToken token, final String commentText) - throws DefaultException { - final User author = getCurrentUser(); - final Long contentId = ContentUtils.parseId(token.getDocument()); - final Comment comment = commentManager.addComment(author, contentId, commentText); - return mapper.map(comment, CommentDTO.class); - } + @Override + @Authenticated + @Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor, mustCheckMembership = false) + @Transactional + public StateContainerDTO addFolder(final String userHash, final StateToken parentToken, + final String title, final String contentTypeId) throws DefaultException { + final User user = getCurrentUser(); + final Container container = createFolder(parentToken.getGroup(), + ContentUtils.parseId(parentToken.getFolder()), title, contentTypeId); + return getState(user, container); + } - @Override - @Authenticated - @Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor, mustCheckMembership = false) - @Transactional - public StateContentDTO addContent(final String userHash, final StateToken parentToken, final String title, - final String typeId) throws DefaultException { - return createContent(parentToken, title, typeId); - } + @Override + @Authenticated + @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) + @Transactional + public void addParticipant(final String userHash, final StateToken token, final String participant) + throws DefaultException { + final Long contentId = ContentUtils.parseId(token.getDocument()); + final User user = getCurrentUser(); + contentManager.addParticipant(user, contentId, participant); + } - @Override - @Authenticated - @Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor, mustCheckMembership = false) - @Transactional - public StateContainerDTO addFolder(final String userHash, final StateToken parentToken, final String title, - final String contentTypeId) throws DefaultException { - final User user = getCurrentUser(); - final Container container = createFolder(parentToken.getGroup(), ContentUtils.parseId(parentToken.getFolder()), - title, contentTypeId); - return getState(user, container); - } + @Override + @Authenticated + @Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor) + @Transactional + public StateContainerDTO addRoom(final String userHash, final StateToken parentToken, + final String roomName) throws DefaultException { + // final String groupShortName = parentToken.getGroup(); + // final User user = getCurrentUser(); + // final String userShortName = user.getShortName(); + // final ChatConnection connection = xmppManager.login(userShortName, + // user.getPassword(), userHash); + // xmppManager.createRoom(connection, roomName, userShortName + + // userHash); + // xmppManager.disconnect(connection); + // try { + // final Container container = createFolder(groupShortName, + // ContentUtils.parseId(parentToken.getFolder()), + // roomName, ChatServerTool.TYPE_ROOM); + // return getState(user, container); + // } catch (final ContentNotFoundException e) { + // xmppManager.destroyRoom(connection, roomName); + // throw new ContentNotFoundException(); + // } catch (final AccessViolationException e) { + // xmppManager.destroyRoom(connection, roomName); + // throw new AccessViolationException(); + // } catch (final GroupNotFoundException e) { + // xmppManager.destroyRoom(connection, roomName); + // throw new GroupNotFoundException(); + // } + return null; + } - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) - @Transactional - public void addParticipant(final String userHash, final StateToken token, final String participant) - throws DefaultException { - final Long contentId = ContentUtils.parseId(token.getDocument()); - final User user = getCurrentUser(); - contentManager.addParticipant(user, contentId, participant); - } + private StateContentDTO createContent(final StateToken parentToken, final String title, + final String typeId) { + final User user = getCurrentUser(); + final Container container = accessService.accessToContainer( + ContentUtils.parseId(parentToken.getFolder()), user, AccessRol.Editor); + final String body = ""; + final Content addedContent = creationService.createContent(title, body, user, container, typeId); + return getState(user, addedContent); + } - @Override - @Authenticated - @Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor) - @Transactional - public StateContainerDTO addRoom(final String userHash, final StateToken parentToken, final String roomName) - throws DefaultException { - // final String groupShortName = parentToken.getGroup(); - // final User user = getCurrentUser(); - // final String userShortName = user.getShortName(); - // final ChatConnection connection = xmppManager.login(userShortName, - // user.getPassword(), userHash); - // xmppManager.createRoom(connection, roomName, userShortName + - // userHash); - // xmppManager.disconnect(connection); - // try { - // final Container container = createFolder(groupShortName, - // ContentUtils.parseId(parentToken.getFolder()), - // roomName, ChatServerTool.TYPE_ROOM); - // return getState(user, container); - // } catch (final ContentNotFoundException e) { - // xmppManager.destroyRoom(connection, roomName); - // throw new ContentNotFoundException(); - // } catch (final AccessViolationException e) { - // xmppManager.destroyRoom(connection, roomName); - // throw new AccessViolationException(); - // } catch (final GroupNotFoundException e) { - // xmppManager.destroyRoom(connection, roomName); - // throw new GroupNotFoundException(); - // } - return null; - } + private Container createFolder(final String groupShortName, final Long parentFolderId, + final String title, final String typeId) throws DefaultException { + final User user = getCurrentUser(); + final Group group = groupManager.findByShortName(groupShortName); + final Container container = creationService.createFolder(group, parentFolderId, title, + user.getLanguage(), typeId); + return container; + } - private StateContentDTO createContent(final StateToken parentToken, final String title, final String typeId) { - final User user = getCurrentUser(); - final Container container = accessService.accessToContainer(ContentUtils.parseId(parentToken.getFolder()), - user, AccessRol.Editor); - final String body = ""; - final Content addedContent = creationService.createContent(title, body, user, container, typeId); - return getState(user, addedContent); - } + @Override + @Authenticated + @Authorizated(accessRolRequired = AccessRol.Administrator) + @Transactional + public StateContentDTO delContent(final String userHash, final StateToken token) + throws DefaultException { + final Long contentId = ContentUtils.parseId(token.getDocument()); + return getState(getCurrentUser(), contentManager.setStatus(contentId, ContentStatus.inTheDustbin)); + } - private Container createFolder(final String groupShortName, final Long parentFolderId, final String title, - final String typeId) throws DefaultException { - final User user = getCurrentUser(); - final Group group = groupManager.findByShortName(groupShortName); - final Container container = creationService.createFolder(group, parentFolderId, title, user.getLanguage(), - typeId); - return container; + @Override + @Authenticated(mandatory = false) + @Transactional + public StateAbstractDTO getContent(final String userHash, final StateToken token) + throws DefaultException { + Group defaultGroup; + final User user = getCurrentUser(); + if (isUserLoggedIn()) { + defaultGroup = groupManager.getGroupOfUserWithId(user.getId()); + if (groupManager.findEnabledTools(defaultGroup.getId()).size() == 0) { + // Groups with no homepage + defaultGroup = groupManager.getSiteDefaultGroup(); + } + } else { + defaultGroup = groupManager.getSiteDefaultGroup(); } - - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Administrator) - @Transactional - public StateContentDTO delContent(final String userHash, final StateToken token) throws DefaultException { - final Long contentId = ContentUtils.parseId(token.getDocument()); - return getState(getCurrentUser(), contentManager.setStatus(contentId, ContentStatus.inTheDustbin)); + try { + final Content content = finderService.getContent(token, defaultGroup); + return getContentOrDefContent(userHash, content.getStateToken(), user, content); + } catch (final NoResultException e) { + throw new ContentNotFoundException(); + } catch (final ToolNotFoundException e) { + throw new ContentNotFoundException(); + } catch (final NoDefaultContentException e) { + return mapper.map(stateService.createNoHome(user, token.getGroup()), StateNoContentDTO.class); } + } - @Override - @Authenticated(mandatory = false) - @Transactional - public StateAbstractDTO getContent(final String userHash, final StateToken token) throws DefaultException { - Group defaultGroup; - final User user = getCurrentUser(); - if (isUserLoggedIn()) { - defaultGroup = groupManager.getGroupOfUserWithId(user.getId()); - if (groupManager.findEnabledTools(defaultGroup.getId()).size() == 0) { - // Groups with no homepage - defaultGroup = groupManager.getSiteDefaultGroup(); - } - } else { - defaultGroup = groupManager.getSiteDefaultGroup(); - } - try { - final Content content = finderService.getContent(token, defaultGroup); - return getContentOrDefContent(userHash, content.getStateToken(), user, content); - } catch (final NoResultException e) { - throw new ContentNotFoundException(); - } catch (final ToolNotFoundException e) { - throw new ContentNotFoundException(); - } catch (final NoDefaultContentException e) { - return mapper.map(stateService.createNoHome(user, token.getGroup()), StateNoContentDTO.class); - } + @Authenticated(mandatory = false) + @Authorizated(accessRolRequired = AccessRol.Viewer) + private StateAbstractDTO getContentOrDefContent(final String userHash, final StateToken stateToken, + final User user, final Content content) { + final Long id = content.getId(); + if (id != null) { + // Content + return mapState(stateService.create(user, content), user); + } else { + // Container + final Container container = content.getContainer(); + return mapState(stateService.create(user, container), user); } + } - @Authenticated(mandatory = false) - @Authorizated(accessRolRequired = AccessRol.Viewer) - private StateAbstractDTO getContentOrDefContent(final String userHash, final StateToken stateToken, - final User user, final Content content) { - final Long id = content.getId(); - if (id != null) { - // Content - return mapState(stateService.create(user, content), user); - } else { - // Container - final Container container = content.getContainer(); - return mapState(stateService.create(user, container), user); - } - } + private User getCurrentUser() { + return getUserSession().getUser(); + } - private User getCurrentUser() { - return getUserSession().getUser(); - } + private StateContainerDTO getState(final User user, final Container container) { + final StateContainer state = stateService.create(user, container); + return mapState(state, user); + } - private StateContainerDTO getState(final User user, final Container container) { - final StateContainer state = stateService.create(user, container); - return mapState(state, user); - } + private StateContentDTO getState(final User user, final Content content) { + final StateContent state = stateService.create(user, content); + return mapState(state, user); + } - private StateContentDTO getState(final User user, final Content content) { - final StateContent state = stateService.create(user, content); - return mapState(state, user); - } + private TagCloudResult getSummaryTags(final Group group) { + final TagCloudResult result = tagManager.getTagCloudResultByGroup(group); + return result; + } - private TagCloudResult getSummaryTags(final Group group) { - final TagCloudResult result = tagManager.getTagCloudResultByGroup(group); - return result; - } + @Override + @Authenticated(mandatory = false) + @Authorizated(accessRolRequired = AccessRol.Viewer) + @Transactional + public TagCloudResult getSummaryTags(final String userHash, final StateToken groupToken) { + final Group group = groupManager.findByShortName(groupToken.getGroup()); + return getSummaryTags(group); + } - @Override - @Authenticated(mandatory = false) - @Authorizated(accessRolRequired = AccessRol.Viewer) - @Transactional - public TagCloudResult getSummaryTags(final String userHash, final StateToken groupToken) { - final Group group = groupManager.findByShortName(groupToken.getGroup()); - return getSummaryTags(group); - } + private UserSession getUserSession() { + return userSessionProvider.get(); + } - private UserSession getUserSession() { - return userSessionProvider.get(); - } + private boolean isUserLoggedIn() { + return getUserSession().isUserLoggedIn(); + } - private boolean isUserLoggedIn() { - return getUserSession().isUserLoggedIn(); - } + private void mapContentRightsInstate(final User user, final AccessLists groupAccessList, + final ContentSimpleDTO siblingDTO) { + final Content sibling = contentManager.find(siblingDTO.getId()); + final AccessLists lists = sibling.hasAccessList() ? sibling.getAccessLists() : groupAccessList; + siblingDTO.setRights(mapper.map(rightsService.get(user, lists), AccessRights.class)); + } - private void mapContentRightsInstate(final User user, final AccessLists groupAccessList, - final ContentSimpleDTO siblingDTO) { - final Content sibling = contentManager.find(siblingDTO.getId()); - final AccessLists lists = sibling.hasAccessList() ? sibling.getAccessLists() : groupAccessList; - siblingDTO.setRights(mapper.map(rightsService.get(user, lists), AccessRights.class)); + private StateContainerDTO mapState(final StateContainer state, final User user) { + final StateContainerDTO stateDTO = mapper.map(state, StateContainerDTO.class); + final AccessLists groupAccessList = state.getGroup().getSocialNetwork().getAccessLists(); + for (final ContentSimpleDTO siblingDTO : stateDTO.getRootContainer().getContents()) { + mapContentRightsInstate(user, groupAccessList, siblingDTO); } - - private StateContainerDTO mapState(final StateContainer state, final User user) { - final StateContainerDTO stateDTO = mapper.map(state, StateContainerDTO.class); - final AccessLists groupAccessList = state.getGroup().getSocialNetwork().getAccessLists(); - for (final ContentSimpleDTO siblingDTO : stateDTO.getRootContainer().getContents()) { - mapContentRightsInstate(user, groupAccessList, siblingDTO); - } - for (final ContentSimpleDTO siblingDTO : stateDTO.getContainer().getContents()) { - mapContentRightsInstate(user, groupAccessList, siblingDTO); - } - return stateDTO; + for (final ContentSimpleDTO siblingDTO : stateDTO.getContainer().getContents()) { + mapContentRightsInstate(user, groupAccessList, siblingDTO); } + return stateDTO; + } - private StateContentDTO mapState(final StateContent state, final User user) { - final StateContentDTO stateDTO = mapper.map(state, StateContentDTO.class); - final AccessLists groupAccessList = state.getGroup().getSocialNetwork().getAccessLists(); - for (final ContentSimpleDTO siblingDTO : stateDTO.getRootContainer().getContents()) { - mapContentRightsInstate(user, groupAccessList, siblingDTO); - } - for (final ContentSimpleDTO siblingDTO : stateDTO.getContainer().getContents()) { - mapContentRightsInstate(user, groupAccessList, siblingDTO); - } - return stateDTO; + private StateContentDTO mapState(final StateContent state, final User user) { + final StateContentDTO stateDTO = mapper.map(state, StateContentDTO.class); + final AccessLists groupAccessList = state.getGroup().getSocialNetwork().getAccessLists(); + for (final ContentSimpleDTO siblingDTO : stateDTO.getRootContainer().getContents()) { + mapContentRightsInstate(user, groupAccessList, siblingDTO); } - - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Viewer) - @Transactional - public CommentDTO markCommentAsAbuse(final String userHash, final StateToken token, final Long commentId) - throws DefaultException { - final User informer = getCurrentUser(); - final Long contentId = ContentUtils.parseId(token.getDocument()); - final Comment comment = commentManager.markAsAbuse(informer, contentId, commentId); - return mapper.map(comment, CommentDTO.class); + for (final ContentSimpleDTO siblingDTO : stateDTO.getContainer().getContents()) { + mapContentRightsInstate(user, groupAccessList, siblingDTO); } + return stateDTO; + } - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Viewer) - @Transactional - public RateResult rateContent(final String userHash, final StateToken token, final Double value) - throws DefaultException { - final User rater = getCurrentUser(); - final Long contentId = ContentUtils.parseId(token.getDocument()); + @Override + @Authenticated + @Authorizated(accessRolRequired = AccessRol.Viewer) + @Transactional + public RateResult rateContent(final String userHash, final StateToken token, final Double value) + throws DefaultException { + final User rater = getCurrentUser(); + final Long contentId = ContentUtils.parseId(token.getDocument()); - if (isUserLoggedIn()) { - return contentManager.rateContent(rater, contentId, value); - } else { - throw new AccessViolationException(); - } + if (isUserLoggedIn()) { + return contentManager.rateContent(rater, contentId, value); + } else { + throw new AccessViolationException(); } + } - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) - @Transactional - public void removeAuthor(final String userHash, final StateToken token, final String authorShortName) - throws DefaultException { - final Long contentId = ContentUtils.parseId(token.getDocument()); - final User user = getCurrentUser(); - contentManager.removeAuthor(user, contentId, authorShortName); - } + @Override + @Authenticated + @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) + @Transactional + public void removeAuthor(final String userHash, final StateToken token, final String authorShortName) + throws DefaultException { + final Long contentId = ContentUtils.parseId(token.getDocument()); + final User user = getCurrentUser(); + contentManager.removeAuthor(user, contentId, authorShortName); + } - @Override - @Authenticated - @Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor, mustCheckMembership = false) - @Transactional - public StateAbstractDTO renameContainer(final String userHash, final StateToken token, final String newName) - throws DefaultException { - renameFolder(token.getGroup(), ContentUtils.parseId(token.getFolder()), newName); - return getContent(userHash, token); - } + @Override + @Authenticated + @Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor, mustCheckMembership = false) + @Transactional + public StateAbstractDTO renameContainer(final String userHash, final StateToken token, + final String newName) throws DefaultException { + renameFolder(token.getGroup(), ContentUtils.parseId(token.getFolder()), newName); + return getContent(userHash, token); + } - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) - @Transactional - public StateAbstractDTO renameContent(final String userHash, final StateToken token, final String newName) - throws DefaultException { - final User user = getCurrentUser(); - try { - accessService.accessToContent(ContentUtils.parseId(token.getDocument()), user, AccessRol.Editor); - } catch (final NoResultException e) { - throw new AccessViolationException(); - } - renameContent(token.getDocument(), newName); - return getContent(userHash, token); + @Override + @Authenticated + @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) + @Transactional + public StateAbstractDTO renameContent(final String userHash, final StateToken token, + final String newName) throws DefaultException { + final User user = getCurrentUser(); + try { + accessService.accessToContent(ContentUtils.parseId(token.getDocument()), user, AccessRol.Editor); + } catch (final NoResultException e) { + throw new AccessViolationException(); } + renameContent(token.getDocument(), newName); + return getContent(userHash, token); + } - private Content renameContent(final String documentId, final String newName) throws ContentNotFoundException, - DefaultException { - final Long contentId = ContentUtils.parseId(documentId); - final User user = getCurrentUser(); - return contentManager.renameContent(user, contentId, newName); - } + private Content renameContent(final String documentId, final String newName) + throws ContentNotFoundException, DefaultException { + final Long contentId = ContentUtils.parseId(documentId); + final User user = getCurrentUser(); + return contentManager.renameContent(user, contentId, newName); + } - private Container renameFolder(final String groupShortName, final Long folderId, final String newName) - throws DefaultException { - final Group group = groupManager.findByShortName(groupShortName); - final User user = getCurrentUser(); - final Container container = accessService.accessToContainer(folderId, user, AccessRol.Editor); - return containerManager.renameFolder(group, container, newName); - } + private Container renameFolder(final String groupShortName, final Long folderId, final String newName) + throws DefaultException { + final Group group = groupManager.findByShortName(groupShortName); + final User user = getCurrentUser(); + final Container container = accessService.accessToContainer(folderId, user, AccessRol.Editor); + return containerManager.renameFolder(group, container, newName); + } - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) - @Transactional - public void save(final String userHash, final StateToken token, final String textContent) throws DefaultException { + @Override + @Authenticated + @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) + @Transactional + public void save(final String userHash, final StateToken token, final String textContent) + throws DefaultException { - final Long contentId = ContentUtils.parseId(token.getDocument()); - final User user = getCurrentUser(); - final Content content = accessService.accessToContent(contentId, user, AccessRol.Editor); - creationService.saveContent(user, content, textContent); - } + final Long contentId = ContentUtils.parseId(token.getDocument()); + final User user = getCurrentUser(); + final Content content = accessService.accessToContent(contentId, user, AccessRol.Editor); + creationService.saveContent(user, content, textContent); + } - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Administrator) - @Transactional - public ContentSimpleDTO setAsDefaultContent(final String userHash, final StateToken token) { - final Content content = contentManager.find(ContentUtils.parseId(token.getDocument())); - groupManager.setDefaultContent(token.getGroup(), content); - return mapper.map(content, ContentSimpleDTO.class); - } + @Override + @Authenticated + @Authorizated(accessRolRequired = AccessRol.Administrator) + @Transactional + public ContentSimpleDTO setAsDefaultContent(final String userHash, final StateToken token) { + final Content content = contentManager.find(ContentUtils.parseId(token.getDocument())); + groupManager.setDefaultContent(token.getGroup(), content); + return mapper.map(content, ContentSimpleDTO.class); + } - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) - @Transactional - public I18nLanguageDTO setLanguage(final String userHash, final StateToken token, final String languageCode) - throws DefaultException { - final Long contentId = ContentUtils.parseId(token.getDocument()); - final User user = getCurrentUser(); - return mapper.map(contentManager.setLanguage(user, contentId, languageCode), I18nLanguageDTO.class); - } + @Override + @Authenticated + @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) + @Transactional + public I18nLanguageDTO setLanguage(final String userHash, final StateToken token, + final String languageCode) throws DefaultException { + final Long contentId = ContentUtils.parseId(token.getDocument()); + final User user = getCurrentUser(); + return mapper.map(contentManager.setLanguage(user, contentId, languageCode), I18nLanguageDTO.class); + } - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) - @Transactional - public void setPublishedOn(final String userHash, final StateToken token, final Date publishedOn) - throws DefaultException { - final Long contentId = ContentUtils.parseId(token.getDocument()); - final User user = getCurrentUser(); - contentManager.setPublishedOn(user, contentId, publishedOn); - } + @Override + @Authenticated + @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) + @Transactional + public void setPublishedOn(final String userHash, final StateToken token, final Date publishedOn) + throws DefaultException { + final Long contentId = ContentUtils.parseId(token.getDocument()); + final User user = getCurrentUser(); + contentManager.setPublishedOn(user, contentId, publishedOn); + } - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Editor) - @Transactional - public StateAbstractDTO setStatus(final String userHash, final StateToken token, final ContentStatus status) { - if (status.equals(ContentStatus.publishedOnline) || status.equals(ContentStatus.rejected) - || status.equals(ContentStatus.inTheDustbin)) { - throw new AccessViolationException(); - } - final Content content = contentManager.setStatus(ContentUtils.parseId(token.getDocument()), - ContentStatus.valueOf(status.toString())); - return getState(getCurrentUser(), content); + @Override + @Authenticated + @Authorizated(accessRolRequired = AccessRol.Editor) + @Transactional + public StateAbstractDTO setStatus(final String userHash, final StateToken token, + final ContentStatus status) { + if (status.equals(ContentStatus.publishedOnline) || status.equals(ContentStatus.rejected) + || status.equals(ContentStatus.inTheDustbin)) { + throw new AccessViolationException(); } + final Content content = contentManager.setStatus(ContentUtils.parseId(token.getDocument()), + ContentStatus.valueOf(status.toString())); + return getState(getCurrentUser(), content); + } - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Administrator) - @Transactional - public StateAbstractDTO setStatusAsAdmin(final String userHash, final StateToken token, final ContentStatus status) { - final Content content = contentManager.setStatus(ContentUtils.parseId(token.getDocument()), - ContentStatus.valueOf(status.toString())); - return getState(getCurrentUser(), content); - } + @Override + @Authenticated + @Authorizated(accessRolRequired = AccessRol.Administrator) + @Transactional + public StateAbstractDTO setStatusAsAdmin(final String userHash, final StateToken token, + final ContentStatus status) { + final Content content = contentManager.setStatus(ContentUtils.parseId(token.getDocument()), + ContentStatus.valueOf(status.toString())); + return getState(getCurrentUser(), content); + } - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) - @Transactional - public TagCloudResult setTags(final String userHash, final StateToken token, final String tags) - throws DefaultException { - final Long contentId = ContentUtils.parseId(token.getDocument()); - final User user = getCurrentUser(); - final Group group = groupManager.findByShortName(token.getGroup()); - contentManager.setTags(user, contentId, tags); - return getSummaryTags(group); - } + @Override + @Authenticated + @Authorizated(accessRolRequired = AccessRol.Editor, mustCheckMembership = false) + @Transactional + public TagCloudResult setTags(final String userHash, final StateToken token, final String tags) + throws DefaultException { + final Long contentId = ContentUtils.parseId(token.getDocument()); + final User user = getCurrentUser(); + final Group group = groupManager.findByShortName(token.getGroup()); + contentManager.setTags(user, contentId, tags); + return getSummaryTags(group); + } - @Override - @Authenticated - @Authorizated(accessRolRequired = AccessRol.Viewer) - @Transactional - public CommentDTO voteComment(final String userHash, final StateToken token, final Long commentId, - final boolean votePositive) throws DefaultException { - final User voter = getCurrentUser(); - final Long contentId = ContentUtils.parseId(token.getDocument()); - final Comment comment = commentManager.vote(voter, contentId, commentId, votePositive); - return mapper.map(comment, CommentDTO.class); - } - } Modified: trunk/src/main/java/cc/kune/core/server/state/StateContent.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/state/StateContent.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/core/server/state/StateContent.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -34,8 +34,8 @@ private Double currentUserRate; private String documentId; private boolean isParticipant; - private boolean isWave; private BasicMimeType mimeType; + private Date modifiedOn; private Date publishedOn; private Double rate; private Integer rateByUsers; @@ -75,6 +75,10 @@ return mimeType; } + public Date getModifiedOn() { + return modifiedOn; + } + public Date getPublishedOn() { return publishedOn; } @@ -139,6 +143,10 @@ this.mimeType = mimeType; } + public void setModifiedOn(final Date modifiedOn) { + this.modifiedOn = modifiedOn; + } + public void setPublishedOn(final Date publishedOn) { this.publishedOn = publishedOn; } Modified: trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -19,6 +19,8 @@ */ package cc.kune.core.server.state; +import java.sql.Date; + import org.waveprotocol.wave.model.waveref.InvalidWaveRefException; import org.waveprotocol.wave.util.escapers.jvm.JavaWaverefEncoder; @@ -103,13 +105,18 @@ final char[] text = revision.getBody(); final String textBody = text == null ? null : new String(text); if (content.isWave()) { - state.setWaveRef(textBody); + final String waveId = content.getWaveId(); + state.setWaveRef(waveId); try { final Wavelet wavelet = kuneWaveManager.fetchWavelet( - JavaWaverefEncoder.decodeWaveRefFromPath(textBody), - content.getAuthors().get(0).getShortName()); + JavaWaverefEncoder.decodeWaveRefFromPath(waveId), content.getAuthors().get(0).getShortName()); state.setContent(wavelet.getRootBlip().getContent()); + // Well we "cache" the last modified time of waves in db (w'll find + // another way to + // do it better in the future with db persitence of waves) + contentManager.setModifiedOn(content, wavelet.getLastModifiedTime()); state.setTitle(wavelet.getTitle()); + state.setModifiedOn(new Date(wavelet.getLastModifiedTime())); state.setIsParticipant(userLogged != User.UNKNOWN_USER ? kuneWaveManager.isParticipant(wavelet, userLogged.getShortName()) : false); } catch (final InvalidWaveRefException e) { Deleted: trunk/src/main/java/cc/kune/core/shared/dto/CommentDTO.java =================================================================== --- trunk/src/main/java/cc/kune/core/shared/dto/CommentDTO.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/core/shared/dto/CommentDTO.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -1,173 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - \*/ -package cc.kune.core.shared.dto; - -import java.util.List; - -import com.google.gwt.user.client.rpc.IsSerializable; - -public class CommentDTO implements IsSerializable { - - private Long id; - // private ContentDTO content; - private Long publishedOn; - private UserSimpleDTO author; - private CommentDTO parent; - private List<CommentDTO> childs; - private int positiveVotersCount; - private int negativeVotersCount; - private int abuseInformersCount; - private String text; - - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final CommentDTO other = (CommentDTO) obj; - if (author == null) { - if (other.author != null) { - return false; - } - } else if (!author.equals(other.author)) { - return false; - } - if (id == null) { - if (other.id != null) { - return false; - } - } else if (!id.equals(other.id)) { - return false; - } - if (parent == null) { - if (other.parent != null) { - return false; - } - } else if (!parent.equals(other.parent)) { - return false; - } - if (publishedOn == null) { - if (other.publishedOn != null) { - return false; - } - } else if (!publishedOn.equals(other.publishedOn)) { - return false; - } - if (text == null) { - if (other.text != null) { - return false; - } - } else if (!text.equals(other.text)) { - return false; - } - return true; - } - - public int getAbuseInformersCount() { - return abuseInformersCount; - } - - public UserSimpleDTO getAuthor() { - return author; - } - - public List<CommentDTO> getChilds() { - return childs; - } - - public Long getId() { - return id; - } - - public int getNegativeVotersCount() { - return negativeVotersCount; - } - - public CommentDTO getParent() { - return parent; - } - - public int getPositiveVotersCount() { - return positiveVotersCount; - } - - public Long getPublishedOn() { - return publishedOn; - } - - public String getText() { - return text; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + (author == null ? 0 : author.hashCode()); - result = prime * result + (id == null ? 0 : id.hashCode()); - result = prime * result + (parent == null ? 0 : parent.hashCode()); - result = prime * result + (publishedOn == null ? 0 : publishedOn.hashCode()); - result = prime * result + (text == null ? 0 : text.hashCode()); - return result; - } - - public void setAbuseInformersCount(final int abuseInformersCount) { - this.abuseInformersCount = abuseInformersCount; - } - - public void setAuthor(final UserSimpleDTO author) { - this.author = author; - } - - public void setChilds(final List<CommentDTO> childs) { - this.childs = childs; - } - - public void setId(final Long id) { - this.id = id; - } - - public void setNegativeVotersCount(final int negativeVotersCount) { - this.negativeVotersCount = negativeVotersCount; - } - - public void setParent(final CommentDTO parent) { - this.parent = parent; - } - - public void setPositiveVotersCount(final int positiveVotersCount) { - this.positiveVotersCount = positiveVotersCount; - } - - public void setPublishedOn(final Long publishedOn) { - this.publishedOn = publishedOn; - } - - public void setText(final String text) { - this.text = text; - } - -} Modified: trunk/src/main/java/cc/kune/core/shared/dto/ContentSimpleDTO.java =================================================================== --- trunk/src/main/java/cc/kune/core/shared/dto/ContentSimpleDTO.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/core/shared/dto/ContentSimpleDTO.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -27,68 +27,86 @@ public class ContentSimpleDTO implements IsSerializable { - private Long id; - private String title; - private String typeId; - private StateToken stateToken; - private ContentStatus status; - private AccessRights rights; - private BasicMimeTypeDTO mimeType; + private Long id; + private BasicMimeTypeDTO mimeType; + private Long modifiedOn; + private AccessRights rights; + private StateToken stateToken; + private ContentStatus status; + private String title; + private String typeId; + private String waveId; - public Long getId() { - return id; - } + public Long getId() { + return id; + } - public BasicMimeTypeDTO getMimeType() { - return mimeType; - } + public BasicMimeTypeDTO getMimeType() { + return mimeType; + } - public AccessRights getRights() { - return rights; - } + public Long getModifiedOn() { + return modifiedOn; + } - public StateToken getStateToken() { - return stateToken; - } + public AccessRights getRights() { + return rights; + } - public ContentStatus getStatus() { - return status; - } + public StateToken getStateToken() { + return stateToken; + } - public String getTitle() { - return title; - } + public ContentStatus getStatus() { + return status; + } - public String getTypeId() { - return typeId; - } + public String getTitle() { + return title; + } - public void setId(final Long id) { - this.id = id; - } + public String getTypeId() { + return typeId; + } - public void setMimeType(final BasicMimeTypeDTO mimeType) { - this.mimeType = mimeType; - } + public String getWaveId() { + return waveId; + } - public void setRights(final AccessRights rights) { - this.rights = rights; - } + public void setId(final Long id) { + this.id = id; + } - public void setStateToken(final StateToken stateToken) { - this.stateToken = stateToken; - } + public void setMimeType(final BasicMimeTypeDTO mimeType) { + this.mimeType = mimeType; + } - public void setStatus(final ContentStatus status) { - this.status = status; - } + public void setModifiedOn(final Long modifiedOn) { + this.modifiedOn = modifiedOn; + } - public void setTitle(final String title) { - this.title = title; - } + public void setRights(final AccessRights rights) { + this.rights = rights; + } - public void setTypeId(final String typeId) { - this.typeId = typeId; - } + public void setStateToken(final StateToken stateToken) { + this.stateToken = stateToken; + } + public void setStatus(final ContentStatus status) { + this.status = status; + } + + public void setTitle(final String title) { + this.title = title; + } + + public void setTypeId(final String typeId) { + this.typeId = typeId; + } + + public void setWaveId(final String waveId) { + this.waveId = waveId; + } + } Modified: trunk/src/main/java/cc/kune/core/shared/dto/StateContentDTO.java =================================================================== --- trunk/src/main/java/cc/kune/core/shared/dto/StateContentDTO.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/core/shared/dto/StateContentDTO.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -37,6 +37,7 @@ private String documentId; private boolean isParticipant; private BasicMimeTypeDTO mimeType; + private Date modifiedOn; private Date publishedOn; private Double rate; private Integer rateByUsers; @@ -76,6 +77,10 @@ return mimeType; } + public Date getModifiedOn() { + return modifiedOn; + } + public Date getPublishedOn() { return publishedOn; } @@ -140,6 +145,10 @@ this.mimeType = mimeType; } + public void setModifiedOn(final Date modifiedOn) { + this.modifiedOn = modifiedOn; + } + public void setPublishedOn(final Date publishedOn) { this.publishedOn = publishedOn; } Deleted: trunk/src/main/java/cc/kune/domain/Comment.java =================================================================== --- trunk/src/main/java/cc/kune/domain/Comment.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/domain/Comment.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -1,222 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - \*/ -package cc.kune.domain; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import javax.persistence.Basic; -import javax.persistence.CascadeType; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToMany; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; -import javax.persistence.OneToOne; -import javax.persistence.Table; -import javax.persistence.Transient; - -import org.hibernate.annotations.Fetch; -import org.hibernate.annotations.FetchMode; -import org.hibernate.search.annotations.DocumentId; -import org.hibernate.search.annotations.Field; -import org.hibernate.search.annotations.Index; -import org.hibernate.search.annotations.IndexedEmbedded; -import org.hibernate.search.annotations.Store; - -@Entity -@Table(name = "comment") -public class Comment { - - @IndexedEmbedded - @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }) - private List<User> abuseInformers; - - @IndexedEmbedded - @OneToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE }) - private User author; - - @Fetch(FetchMode.JOIN) - @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, fetch = FetchType.EAGER) - private Set<Comment> childs; - - @ManyToOne - @JoinColumn - @IndexedEmbedded - private Content content; - - @Id - @GeneratedValue - @DocumentId - private Long id; - - @IndexedEmbedded - @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }) - private List<User> negativeVoters; - - // Parent/Child pattern: - // http://www.hibernate.org/hib_docs/reference/en/html/example-parentchild.html - // http://www.researchkitchen.co.uk/blog/archives/57 - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn - private Comment parent; - - @IndexedEmbedded - @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }) - private List<User> positiveVoters; - - @Basic(optional = false) - private Long publishedOn; - - @Field(index = Index.TOKENIZED, store = Store.NO) - private String text; - - public Comment() { - this.publishedOn = System.currentTimeMillis(); - this.childs = new HashSet<Comment>(); - this.positiveVoters = new ArrayList<User>(); - this.negativeVoters = new ArrayList<User>(); - this.abuseInformers = new ArrayList<User>(); - } - - public void addAbuseInformer(final User informer) { - if (!abuseInformers.contains(informer)) { - abuseInformers.add(informer); - } - } - - public void addNegativeVoter(final User voter) { - if (!negativeVoters.contains(voter)) { - negativeVoters.add(voter); - } - if (positiveVoters.contains(voter)) { - positiveVoters.remove(voter); - } - } - - public void addPositiveVoter(final User voter) { - if (!positiveVoters.contains(voter)) { - positiveVoters.add(voter); - } - if (negativeVoters.contains(voter)) { - negativeVoters.remove(voter); - } - } - - public List<User> getAbuseInformers() { - return abuseInformers; - } - - @Transient - public int getAbuseInformersCount() { - return abuseInformers.size(); - } - - public User getAuthor() { - return author; - } - - public Set<Comment> getChilds() { - return childs; - } - - public Content getContent() { - return content; - } - - public Long getId() { - return id; - } - - public List<User> getNegativeVoters() { - return negativeVoters; - } - - @Transient - public int getNegativeVotersCount() { - return negativeVoters.size(); - } - - public Comment getParent() { - return parent; - } - - public List<User> getPositiveVoters() { - return positiveVoters; - } - - @Transient - public int getPositiveVotersCount() { - return positiveVoters.size(); - } - - public Long getPublishedOn() { - return publishedOn; - } - - public String getText() { - return text; - } - - public void setAbuseInformers(final List<User> abuseInformers) { - this.abuseInformers = abuseInformers; - } - - public void setAuthor(final User author) { - this.author = author; - } - - public void setChilds(final Set<Comment> childs) { - this.childs = childs; - } - - public void setContent(final Content content) { - this.content = content; - } - - public void setId(final Long id) { - this.id = id; - } - - public void setNegativeVoters(final List<User> negativeVoters) { - this.negativeVoters = negativeVoters; - } - - public void setParent(final Comment parent) { - this.parent = parent; - } - - public void setPositiveVoters(final List<User> positiveVoters) { - this.positiveVoters = positiveVoters; - } - - public void setPublishedOn(final Long publishedOn) { - this.publishedOn = publishedOn; - } - - public void setText(final String text) { - this.text = text; - } -} Modified: trunk/src/main/java/cc/kune/domain/Content.java =================================================================== --- trunk/src/main/java/cc/kune/domain/Content.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/domain/Content.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -1,5 +1,6 @@ /* * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) * This file is part of kune. * @@ -21,9 +22,7 @@ import java.util.ArrayList; import java.util.Date; -import java.util.HashSet; import java.util.List; -import java.util.Set; import javax.persistence.Basic; import javax.persistence.CascadeType; @@ -48,7 +47,6 @@ import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; -import org.hibernate.search.annotations.ContainedIn; import org.hibernate.search.annotations.DocumentId; import org.hibernate.search.annotations.Indexed; import org.hibernate.search.annotations.IndexedEmbedded; @@ -78,11 +76,6 @@ @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }) private List<User> authors; - @Fetch(FetchMode.JOIN) - @ContainedIn - @OneToMany(mappedBy = "content", cascade = CascadeType.ALL, fetch = FetchType.EAGER) - private Set<Comment> comments; - @ManyToOne @JoinColumn @IndexedEmbedded @@ -123,6 +116,9 @@ private BasicMimeType mimeType; @Basic(optional = true) + private Long modifiedOn; + + @Basic(optional = true) private Date publishedOn; @Enumerated(EnumType.STRING) @@ -138,10 +134,11 @@ @Version private int version; + private String waveId; + public Content() { translations = new ArrayList<ContentTranslation>(); authors = new ArrayList<User>(); - comments = new HashSet<Comment>(); createdOn = System.currentTimeMillis(); lastRevision = new Revision(this); accessLists = null; @@ -154,13 +151,6 @@ } } - public void addComment(final Comment comment) { - // FIXME: something related with lazy initialization (workaround using - // size()) - comments.size(); - comments.add(comment); - } - public void addRevision(final Revision revision) { if (lastRevision == null) { lastRevision = revision; @@ -179,10 +169,6 @@ return authors; } - public Set<Comment> getComments() { - return comments; - } - public Container getContainer() { return container; } @@ -219,6 +205,10 @@ return mimeType; } + public Long getModifiedOn() { + return modifiedOn; + } + public Group getOwner(final Group group) { return container.getOwner(); } @@ -258,6 +248,10 @@ return version; } + public String getWaveId() { + return waveId; + } + @Transient public boolean hasAccessList() { return accessLists != null; @@ -280,10 +274,6 @@ this.authors = authors; } - public void setComments(final Set<Comment> comments) { - this.comments = comments; - } - public void setContainer(final Container container) { this.container = container; } @@ -321,6 +311,10 @@ this.mimeType = mimeType; } + public void setModifiedOn(final Long modifiedOn) { + this.modifiedOn = modifiedOn; + } + public void setPublishedOn(final Date publishedOn) { this.publishedOn = publishedOn; } @@ -341,6 +335,10 @@ this.version = version; } + public void setWaveId(final String waveId) { + this.waveId = waveId; + } + @Override public String toString() { return "Content[(" + getStateTokenEncoded() + "): " + getTitle() + "]"; Modified: trunk/src/main/java/cc/kune/gspace/client/actions/RenameAction.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/actions/RenameAction.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/gspace/client/actions/RenameAction.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -20,6 +20,7 @@ package cc.kune.gspace.client.actions; import cc.kune.common.client.notify.NotifyUser; +import cc.kune.core.client.errors.ErrorHandler; import cc.kune.core.client.errors.NameInUseException; import cc.kune.core.client.errors.NameNotPermittedException; import cc.kune.core.client.rpcservices.ContentServiceAsync; @@ -34,15 +35,17 @@ public class RenameAction { private final Provider<ContentServiceAsync> contentService; + private final ErrorHandler errorHandler; private final I18nTranslationService i18n; private final Session session; @Inject public RenameAction(final I18nTranslationService i18n, final Session session, - final Provider<ContentServiceAsync> contentService) { + final Provider<ContentServiceAsync> contentService, final ErrorHandler errorHandler) { this.i18n = i18n; this.session = session; this.contentService = contentService; + this.errorHandler = errorHandler; } public void rename(final StateToken token, final String oldName, final String newName, @@ -60,9 +63,10 @@ NotifyUser.error(i18n.tWithNT("This name is not permitted", "It is used when a file or a folder does not have a permitted name")); } else { + errorHandler.process(caught); NotifyUser.error(i18n.t("Error renaming")); } - listener.onFail(token, newName); + listener.onFail(token, oldName); } @Override Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemDescriptor.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemDescriptor.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemDescriptor.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -24,70 +24,77 @@ import cc.kune.core.shared.domain.utils.StateToken; public class FolderItemDescriptor { - private final GuiActionDescCollection actionCollection; - private final boolean allowDrag; - private final boolean allowDrop; - private final ContentStatus contentStatus; - private final Object icon; - private final String id; - private final String parentId; - private final String text; - private final StateToken token; - private final String tooltip; + private final GuiActionDescCollection actionCollection; + private final boolean allowDrag; + private final boolean allowDrop; + private final ContentStatus contentStatus; + private final Object icon; + private final String id; + private final long modififiedOn; + private final String parentId; + private final String text; + private final StateToken token; + private final String tooltip; - public FolderItemDescriptor(final String id, final String parentId, final Object icon, final String text, - final String tooltip, final ContentStatus contentStatus, final StateToken token, final boolean allowDrag, - final boolean allowDrop, final GuiActionDescCollection actionCollection) { - this.id = id; - this.parentId = parentId; - this.icon = icon; - this.text = text; - this.tooltip = tooltip; - this.contentStatus = contentStatus; - this.token = token; - this.allowDrag = allowDrag; - this.allowDrop = allowDrop; - this.actionCollection = actionCollection; - } + public FolderItemDescriptor(final String id, final String parentId, final Object icon, + final String text, final String tooltip, final ContentStatus contentStatus, + final StateToken token, final long modififiedOn, final boolean allowDrag, final boolean allowDrop, + final GuiActionDescCollection actionCollection) { + this.id = id; + this.parentId = parentId; + this.icon = icon; + this.text = text; + this.tooltip = tooltip; + this.contentStatus = contentStatus; + this.token = token; + this.modififiedOn = modififiedOn; + this.allowDrag = allowDrag; + this.allowDrop = allowDrop; + this.actionCollection = actionCollection; + } - public GuiActionDescCollection getActionCollection() { - return actionCollection; - } + public GuiActionDescCollection getActionCollection() { + return actionCollection; + } - public ContentStatus getContentStatus() { - return contentStatus; - } + public ContentStatus getContentStatus() { + return contentStatus; + } - public Object getIcon() { - return icon; - } + public Object getIcon() { + return icon; + } - public String getId() { - return id; - } + public String getId() { + return id; + } - public String getParentId() { - return parentId; - } + public long getModififiedOn() { + return modififiedOn; + } - public StateToken getStateToken() { - return token; - } + public String getParentId() { + return parentId; + } - public String getText() { - return text; - } + public StateToken getStateToken() { + return token; + } - public String getTooltip() { - return tooltip; - } + public String getText() { + return text; + } - public boolean isDraggable() { - return allowDrag; - } + public String getTooltip() { + return tooltip; + } - public boolean isDroppable() { - return allowDrop; - } + public boolean isDraggable() { + return allowDrag; + } + public boolean isDroppable() { + return allowDrop; + } + } Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -40,6 +40,8 @@ @UiField SimplePanel menu; @UiField + InlineLabel modified; + @UiField InlineLabel title; public FolderItemWidget(final ImageResource iconResource, final String title) { @@ -102,6 +104,14 @@ menu.add(toolbar); } + public void setMenuVisible(final boolean visible) { + menu.getElement().getStyle().setOpacity(visible ? 1d : 0.2d); + } + + public void setModifiedText(final String text) { + modified.setText(text); + } + public void setSelect(final boolean selected) { clearFocusStyles(); focusPanel.removeStyleDependentName(selected ? "noselected" : "selected"); Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.ui.xml =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.ui.xml 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.ui.xml 2011-05-05 14:46:37 UTC (rev 1346) @@ -35,6 +35,17 @@ outline: 0; } + .modified { + margin-right: 5px; + color: #A05A2C; + font-size: 17px; + line-height: 1.3em; + -moz-user-select: none; + -khtml-user-select: none; + float: right; + font-style: italic; + } + .title { margin-left: 5px; color: #A05A2C; @@ -57,6 +68,8 @@ <g:Image styleName="{style.icon}" ui:field="icon" /> <g:InlineLabel styleName="{style.title}" ui:field="title" /> <g:SimplePanel styleName="{style.menu}" ui:field="menu" /> + <g:InlineLabel styleName="{style.modified}" + ui:field="modified" /> </g:FlowPanel> </g:FocusPanel> </ui:UiBinder> \ No newline at end of file Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -1,5 +1,7 @@ package cc.kune.gspace.client.viewers; +import org.waveprotocol.wave.client.common.util.DateUtils; + import cc.kune.common.client.actions.ui.ActionSimplePanel; import cc.kune.common.client.actions.ui.bind.GuiProvider; import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; @@ -9,6 +11,7 @@ import cc.kune.core.shared.dto.StateContainerDTO; import cc.kune.core.shared.i18n.I18nTranslationService; import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.viewers.FolderViewerPresenter.FolderViewerView; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; @@ -57,12 +60,17 @@ final FolderItemWidget itemWidget = new FolderItemWidget((ImageResource) item.getIcon(), item.getText()); final ActionSimplePanel toolbar = new ActionSimplePanel(guiProvider); + final long modifiedOn = item.getModififiedOn(); + if (modifiedOn != FolderViewerView.NO_DATE) { + // String dateFormat = session.getCurrentLanguage().getDateFormatShort(); + itemWidget.setModifiedText(DateUtils.getInstance().formatPastDate(modifiedOn)); + } itemWidget.setMenu(toolbar); // Tooltip.to(itemWidget, item.getTooltip()); final MenuDescriptor menu = new MenuDescriptor(i18n.t("Actions")); menu.withIcon(res.arrowdown()).withStyles("k-def-docbtn, k-btn, k-button"); menu.setStandalone(false); - menu.setVisible(false); + itemWidget.setMenuVisible(false); toolbar.add(menu); for (final GuiActionDescrip menuItem : item.getActionCollection()) { menuItem.setParent(menu); @@ -82,7 +90,8 @@ itemWidget.getRowMouse().addMouseOutHandler(new MouseOutHandler() { @Override public void onMouseOut(final MouseOutEvent event) { - menu.setVisible(false); + itemWidget.setMenuVisible(false); + // menu.setVisible(false); // itemWidget.setSelect(false); // menu.hide(); } @@ -90,7 +99,8 @@ itemWidget.getRowMouse().addMouseOverHandler(new MouseOverHandler() { @Override public void onMouseOver(final MouseOverEvent event) { - menu.setVisible(true); + // menu.setVisible(true); + itemWidget.setMenuVisible(true); } }); flex.setWidget(rowCount + 1, 0, itemWidget); Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -55,6 +55,8 @@ public interface FolderViewerView extends View { + long NO_DATE = 0; + void addItem(FolderItemDescriptor item, ClickHandler clickHandler, DoubleClickHandler doubleClickHandler); @@ -111,11 +113,11 @@ private void addItem(final String title, final String contentTypeId, final BasicMimeTypeDTO mimeType, final ContentStatus status, final StateToken stateToken, final StateToken parentStateToken, - final AccessRights rights) { + final AccessRights rights, final long modifiedOn) { final Object icon = getIcon(stateToken, contentTypeId, mimeType); final String tooltip = getTooltip(stateToken, mimeType); final FolderItemDescriptor item = new FolderItemDescriptor(genId(stateToken), - genId(parentStateToken), icon, title, tooltip, status, stateToken, + genId(parentStateToken), icon, title, tooltip, status, stateToken, modifiedOn, capabilitiesRegistry.isDragable(contentTypeId) && rights.isAdministrable(), capabilitiesRegistry.isDropable(contentTypeId) && rights.isAdministrable(), actionsRegistry.getCurrentActions(stateToken, contentTypeId, session.isLogged(), rights, @@ -155,12 +157,13 @@ addItem(childFolder.getName(), childFolder.getTypeId(), null, ContentStatus.publishedOnline, childFolder.getStateToken(), childFolder.getStateToken().copy().setFolder(childFolder.getParentFolderId()), - containerRights); + containerRights, FolderViewerView.NO_DATE); } // Other contents (docs, etc) for (final ContentSimpleDTO content : container.getContents()) { addItem(content.getTitle(), content.getTypeId(), content.getMimeType(), content.getStatus(), - content.getStateToken(), content.getStateToken().copy().clearDocument(), content.getRights()); + content.getStateToken(), content.getStateToken().copy().clearDocument(), + content.getRights(), content.getModifiedOn()); } } } Modified: trunk/src/main/resources/META-INF/persistence.xml =================================================================== --- trunk/src/main/resources/META-INF/persistence.xml 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/resources/META-INF/persistence.xml 2011-05-05 14:46:37 UTC (rev 1346) @@ -11,7 +11,6 @@ <!-- src/main/java/cc/kune/domain$ ls -1 *.java | sed 's/.java/<\/class>/g' | sed 's/^/<class>cc.kune.domain./g' --> <class>cc.kune.domain.AccessLists</class> <class>cc.kune.domain.BasicMimeType</class> - <class>cc.kune.domain.Comment</class> <class>cc.kune.domain.Container</class> <class>cc.kune.domain.ContainerTranslation</class> <class>cc.kune.domain.Content</class> @@ -68,7 +67,6 @@ <!-- JPA entities must be registered here --> <class>cc.kune.domain.AccessLists</class> <class>cc.kune.domain.BasicMimeType</class> - <class>cc.kune.domain.Comment</class> <class>cc.kune.domain.Container</class> <class>cc.kune.domain.ContainerTranslation</class> <class>cc.kune.domain.Content</class> @@ -121,7 +119,6 @@ <!-- JPA entities must be registered here --> <class>cc.kune.domain.AccessLists</class> <class>cc.kune.domain.BasicMimeType</class> - <class>cc.kune.domain.Comment</class> <class>cc.kune.domain.Container</class> <class>cc.kune.domain.ContainerTranslation</class> <class>cc.kune.domain.Content</class> Modified: trunk/src/main/resources/dozerBeanMapping.xml =================================================================== --- trunk/src/main/resources/dozerBeanMapping.xml 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/main/resources/dozerBeanMapping.xml 2011-05-05 14:46:37 UTC (rev 1346) @@ -209,34 +209,6 @@ <class-b>cc.kune.domain.Tag</class-b> </mapping> <mapping> - <class-a> cc.kune.domain.Comment </class-a> - <class-b> cc.kune.core.shared.dto.CommentDTO </class-b> - <field> - <a>author</a> - <b>author</b> - <a-hint> cc.kune.domain.User </a-hint> - <b-hint> cc.kune.core.shared.dto.UserSimpleDTO </b-hint> - </field> - <field> - <a>childs</a> - <b>childs</b> - <a-hint> cc.kune.domain.Comment </a-hint> - <b-hint> cc.kune.core.shared.dto.CommentDTO </b-hint> - </field> - <field type="one-way"> - <a get-method="getPositiveVotersCount"> positiveVotersCount </a> - <b>positiveVotersCount</b> - </field> - <field type="one-way"> - <a get-method="getNegativeVotersCount"> negativeVotersCount </a> - <b>negativeVotersCount</b> - </field> - <field type="one-way"> - <a get-method="getAbuseInformersCount"> abuseInformersCount </a> - <b>abuseInformersCount</b> - </field> - </mapping> - <mapping> <class-a>cc.kune.core.shared.dto.LinkDTO</class-a> <class-b>cc.kune.domain.User</class-b> <field> Modified: trunk/src/test/java/cc/kune/core/server/TestConstants.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/TestConstants.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/test/java/cc/kune/core/server/TestConstants.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -1,12 +1,12 @@ package cc.kune.core.server; public final class TestConstants { - // test: use memory - // test_db: use mysql - // public static final String PERSISTENCE_UNIT = "test_db"; - public static final String PERSISTENCE_UNIT = "test"; - public static final String WAVE_TEST_PROPFILE = "wave-server-testing.properties"; + // test: use memory + // test_db: use mysql + // public static final String PERSISTENCE_UNIT = "test_db"; + public static final String PERSISTENCE_UNIT = "test"; + public static final String WAVE_TEST_PROPFILE = "wave-server-testing.properties"; - private TestConstants() { - } + private TestConstants() { + } } Modified: trunk/src/test/java/cc/kune/core/server/access/FinderTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/access/FinderTest.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/test/java/cc/kune/core/server/access/FinderTest.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -22,14 +22,11 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; -import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; import cc.kune.core.client.errors.ContentNotFoundException; import cc.kune.core.server.TestDomainHelper; -import cc.kune.core.server.access.FinderServiceDefault; -import cc.kune.core.server.content.CommentManager; import cc.kune.core.server.content.ContainerManager; import cc.kune.core.server.content.ContentManager; import cc.kune.core.server.manager.GroupManager; @@ -42,147 +39,139 @@ public class FinderTest { - private GroupManager groupManager; - private ContainerManager containerManager; - private ContentManager contentManager; - private RateManager rateManager; - private FinderServiceDefault finder; - private CommentManager commentManager; + private ContainerManager containerManager; + private ContentManager contentManager; + private FinderServiceDefault finder; + private GroupManager groupManager; + private RateManager rateManager; - @Test(expected = ContentNotFoundException.class) - public void contentAndFolderMatch() throws Exception { - final Content descriptor = new Content(); - final Container container = TestDomainHelper.createFolderWithIdAndToolName(5, "toolName2"); - descriptor.setContainer(container); - Mockito.when(contentManager.find(1L)).thenReturn(descriptor); + @Test(expected = ContentNotFoundException.class) + public void contentAndFolderMatch() throws Exception { + final Content descriptor = new Content(); + final Container container = TestDomainHelper.createFolderWithIdAndToolName(5, "toolName2"); + descriptor.setContainer(container); + Mockito.when(contentManager.find(1L)).thenReturn(descriptor); - finder.getContent(new StateToken("groupShortName", "toolName", "5", "1"), null); - } + finder.getContent(new StateToken("groupShortName", "toolName", "5", "1"), null); + } - @Test(expected = ContentNotFoundException.class) - public void contentAndGrouplMatch() throws Exception { - final Content descriptor = new Content(); - final Container container = TestDomainHelper.createFolderWithIdAndGroupAndTool(5, "groupOther", "toolName"); - descriptor.setContainer(container); - Mockito.when(contentManager.find(1L)).thenReturn(descriptor); + @Test(expected = ContentNotFoundException.class) + public void contentAndGrouplMatch() throws Exception { + final Content descriptor = new Content(); + final Container container = TestDomainHelper.createFolderWithIdAndGroupAndTool(5, "groupOther", + "toolName"); + descriptor.setContainer(container); + Mockito.when(contentManager.find(1L)).thenReturn(descriptor); - finder.getContent(new StateToken("groupShortName", "toolName", "5", "1"), null); - } + finder.getContent(new StateToken("groupShortName", "toolName", "5", "1"), null); + } - @Test(expected = ContentNotFoundException.class) - public void contentAndToolMatch() throws Exception { - final Content descriptor = new Content(); - final Container container = TestDomainHelper.createFolderWithId(1); - descriptor.setContainer(container); - Mockito.when(contentManager.find(1L)).thenReturn(descriptor); + @Test(expected = ContentNotFoundException.class) + public void contentAndToolMatch() throws Exception { + final Content descriptor = new Content(); + final Container container = TestDomainHelper.createFolderWithId(1); + descriptor.setContainer(container); + Mockito.when(contentManager.find(1L)).thenReturn(descriptor); - finder.getContent(new StateToken("groupShortName", "toolName", "5", "1"), null); - } + finder.getContent(new StateToken("groupShortName", "toolName", "5", "1"), null); + } - @Before - public void createSession() { - this.groupManager = Mockito.mock(GroupManager.class); - this.containerManager = Mockito.mock(ContainerManager.class); - this.contentManager = Mockito.mock(ContentManager.class); - this.rateManager = Mockito.mock(RateManager.class); - this.commentManager = Mockito.mock(CommentManager.class); - this.finder = new FinderServiceDefault(groupManager, containerManager, contentManager, rateManager, - commentManager); - } + @Test + public void getGroupDefaultContent() throws Exception { + final Group group = new Group(); + final Content descriptor = new Content(); + group.setDefaultContent(descriptor); + Mockito.when(groupManager.findByShortName("groupShortName")).thenReturn(group); - @Test - public void getGroupDefaultContent() throws Exception { - final Group group = new Group(); - final Content descriptor = new Content(); - group.setDefaultContent(descriptor); - Mockito.when(groupManager.findByShortName("groupShortName")).thenReturn(group); + final Content content = finder.getContent(new StateToken("groupShortName", null, null, null), null); + assertSame(descriptor, content); + } - final Content content = finder.getContent(new StateToken("groupShortName", null, null, null), null); - assertSame(descriptor, content); - } + @Test + public void testCompleteToken() throws Exception { + final Container container = TestDomainHelper.createFolderWithIdAndGroupAndTool(1, "groupShortName", + "toolName"); + final Content descriptor = new Content(); + descriptor.setId(1L); + descriptor.setContainer(container); - @Test - public void testCompleteToken() throws Exception { - final Container container = TestDomainHelper.createFolderWithIdAndGroupAndTool(1, "groupShortName", "toolName"); - final Content descriptor = new Content(); - descriptor.setId(1L); - descriptor.setContainer(container); + Mockito.when(contentManager.find(2L)).thenReturn(descriptor); - Mockito.when(contentManager.find(2L)).thenReturn(descriptor); + final Content content = finder.getContent(new StateToken("groupShortName", "toolName", "1", "2"), + null); + assertSame(descriptor, content); + } - final Content content = finder.getContent(new StateToken("groupShortName", "toolName", "1", "2"), null); - assertSame(descriptor, content); - } + @Test(expected = ContentNotFoundException.class) + public void testContainerExistsButContentNotFound() throws Exception { + finder.getContent(new StateToken("groupShortName", "toolName", "1", "999"), null); + } - @Test(expected = ContentNotFoundException.class) - public void testContainerExistsButContentNotFound() throws Exception { - finder.getContent(new StateToken("groupShortName", "toolName", "1", "999"), null); - } + @Test + public void testDefaultGroupContent() throws Exception { + final Group userGroup = new Group(); + final Content descriptor = TestDomainHelper.createDescriptor(1L, "title", "content"); + userGroup.setDefaultContent(descriptor); - @Test - public void testDefaultGroupContent() throws Exception { - final Group userGroup = new Group(); - final Content descriptor = TestDomainHelper.createDescriptor(1L, "title", "content"); - userGroup.setDefaultContent(descriptor); + final Content content = finder.getContent(new StateToken(), userGroup); + assertSame(descriptor, content); + } - final Content content = finder.getContent(new StateToken(), userGroup); - assertSame(descriptor, content); - } + @Test + public void testDefaultGroupContentHasDefLicense() throws Exception { + final Group userGroup = new Group(); + final Content descriptor = TestDomainHelper.createDescriptor(1L, "title", "content"); + userGroup.setDefaultContent(descriptor); - @Test - public void testDefaultGroupContentHasDefLicense() throws Exception { - final Group userGroup = new Group(); - final Content descriptor = TestDomainHelper.createDescriptor(1L, "title", "content"); - userGroup.setDefaultContent(descriptor); + final Content content = finder.getContent(new StateToken(), userGroup); + assertSame(userGroup.getDefaultLicense(), content.getLicense()); + } - final Content content = finder.getContent(new StateToken(), userGroup); - assertSame(userGroup.getDefaultLicense(), content.getLicense()); - } + @Test + public void testDefaultUserContent() throws Exception { + final Content content = new Content(); + final Group group = new Group(); + group.setDefaultContent(content); + final Content response = finder.getContent(new StateToken(), group); + assertSame(content, response); + } - @Test - public void testDefaultUserContent() throws Exception { - final Content content = new Content(); - final Group group = new Group(); - group.setDefaultContent(content); - final Content response = finder.getContent(new StateToken(), group); - assertSame(content, response); - } + @Test + public void testDocMissing() throws Exception { + final Container container = new Container(); + Mockito.when(containerManager.find(1L)).thenReturn(container); - @Test - public void testDocMissing() throws Exception { - final Container container = new Container(); - Mockito.when(containerManager.find(1L)).thenReturn(container); + final Content content = finder.getContent(new StateToken("groupShortName", "toolName", "1", null), + null); + assertNotNull(content); + assertSame(container, content.getContainer()); + } - final Content content = finder.getContent(new StateToken("groupShortName", "toolName", "1", null), null); - assertNotNull(content); - assertSame(container, content.getContainer()); - } + @Test + public void testFolderMissing() throws Exception { + final Group group = new Group(); + final ToolConfiguration config = group.setToolConfig("toolName", new ToolConfiguration()); + final Container container = config.setRoot(new Container()); + Mockito.when(groupManager.findByShortName("groupShortName")).thenReturn(group); - @Test - public void testFolderMissing() throws Exception { - final Group group = new Group(); - final ToolConfiguration config = group.setToolConfig("toolName", new ToolConfiguration()); - final Container container = config.setRoot(new Container()); - Mockito.when(groupManager.findByShortName("groupShortName")).thenReturn(group); + final StateToken token = new StateToken("groupShortName", "toolName", null, null); + final Content content = finder.getContent(token, null); + assertSame(container, content.getContainer()); + } - final StateToken token = new StateToken("groupShortName", "toolName", null, null); - final Content content = finder.getContent(token, null); - assertSame(container, content.getContainer()); - } + @Test(expected = ContentNotFoundException.class) + public void testIds() throws Exception { + final Content descriptor = new Content(); + final Container container = TestDomainHelper.createFolderWithIdAndToolName(5, "toolName"); + descriptor.setContainer(container); + Mockito.when(contentManager.find(1L)).thenReturn(descriptor); - @Test(expected = ContentNotFoundException.class) - public void testIds() throws Exception { - final Content descriptor = new Content(); - final Container container = TestDomainHelper.createFolderWithIdAndToolName(5, "toolName"); - descriptor.setContainer(container); - Mockito.when(contentManager.find(1L)).thenReturn(descriptor); + finder.getContent(new StateToken("groupShortName", "toolName", "5", "1a"), null); + } - finder.getContent(new StateToken("groupShortName", "toolName", "5", "1a"), null); - } + @Test(expected = ContentNotFoundException.class) + public void voyAJoder() throws Exception { + finder.getContent(new StateToken(null, "toolName", "1", "2"), null); + } - @Test(expected = ContentNotFoundException.class) - public void voyAJoder() throws Exception { - finder.getContent(new StateToken(null, "toolName", "1", "2"), null); - } - } Deleted: trunk/src/test/java/cc/kune/core/server/integration/content/ContentCommentServiceTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/integration/content/ContentCommentServiceTest.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/test/java/cc/kune/core/server/integration/content/ContentCommentServiceTest.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -1,61 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.server.integration.content; - -import static org.junit.Assert.assertEquals; - -import org.junit.Before; -import org.junit.Test; - -import cc.kune.core.client.errors.DefaultException; -import cc.kune.core.client.errors.UserMustBeLoggedException; -import cc.kune.core.server.integration.IntegrationTestHelper; -import cc.kune.core.shared.dto.CommentDTO; -import cc.kune.core.shared.dto.StateContainerDTO; - -public class ContentCommentServiceTest extends ContentServiceIntegrationTest { - - private StateContainerDTO defaultContent; - - @Test - public void commentDefaultContent() throws Exception { - doLogin(); - final String commentText = "Some comment"; - final CommentDTO commentDTO = contentService.addComment(session.getHash(), defaultContent.getStateToken(), - commentText); - assertEquals(commentDTO.getText(), commentText); - assertEquals(commentDTO.getPositiveVotersCount(), 0); - assertEquals(commentDTO.getNegativeVotersCount(), 0); - assertEquals(commentDTO.getAbuseInformersCount(), 0); - } - - @Test(expected = UserMustBeLoggedException.class) - public void commentWithoutLoginMustFail() throws DefaultException { - final String commentText = "Some comment"; - contentService.addComment(session.getHash(), defaultContent.getStateToken(), commentText); - } - - @Before - public void init() throws Exception { - new IntegrationTestHelper(this); - defaultContent = getSiteDefaultContent(); - } - -} Modified: trunk/src/test/java/cc/kune/core/server/manager/ContentManagerTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/manager/ContentManagerTest.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/test/java/cc/kune/core/server/manager/ContentManagerTest.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -33,87 +33,86 @@ public class ContentManagerTest extends PersistencePreLoadedDataTest { - private static final String BODY = "body"; - private static final String MIMETYPE = "image"; - private static final String TITLE = "title"; + private static final String BODY = "body"; + private static final String MIMETYPE = "image"; + private static final String TITLE = "title"; - private void createContent() { - final Content cnt = contentManager.createContent(TITLE, BODY, user, container, TYPE_UPLOADEDFILE); - persist(cnt); - } + private void createContent() { + final Content cnt = contentManager.createContent(TITLE, BODY, user, container, TYPE_UPLOADEDFILE); + persist(cnt); + } - private void createContentWithMimeAndCheck(final String mimetype) { - final Content cnt = contentManager.createContent(TITLE, BODY, user, container, TYPE_UPLOADEDFILE); - cnt.setMimeType(new BasicMimeType(mimetype)); - persist(cnt); - final Content newCnt = contentManager.find(cnt.getId()); - assertEquals(mimetype, newCnt.getMimeType().toString()); - } + private void createContentWithMimeAndCheck(final String mimetype) { + final Content cnt = contentManager.createContent(TITLE, BODY, user, container, TYPE_UPLOADEDFILE); + cnt.setMimeType(new BasicMimeType(mimetype)); + persist(cnt); + final Content newCnt = contentManager.find(cnt.getId()); + assertEquals(mimetype, newCnt.getMimeType().toString()); + } - @Ignore - @Test - public void testBasicBodySearch() { - createContent(); - final SearchResult<Content> search = contentManager.search(BODY); - contentManager.reIndex(); - assertEquals(1, search.getSize()); - } + @Test + public void testBasicBodySearch() { + createContent(); + final SearchResult<Content> search = contentManager.search(BODY); + contentManager.reIndex(); + assertEquals(1, search.getSize()); + } - @Test - public void testBasicMimePersist() { - final String mimetype = "application/pdf"; - createContentWithMimeAndCheck(mimetype); - } + @Test + public void testBasicMimePersist() { + final String mimetype = "application/pdf"; + createContentWithMimeAndCheck(mimetype); + } - @Test - public void testBasicMimePersistWithoutSubtype() { - final String mimetype = "application"; - createContentWithMimeAndCheck(mimetype); - } + @Test + public void testBasicMimePersistWithoutSubtype() { + final String mimetype = "application"; + createContentWithMimeAndCheck(mimetype); + } - @Test - public void testBasicMimeSearchWithQueriesAndFields() { - createContentWithMimeAndCheck(MIMETYPE + "/png"); - contentManager.reIndex(); - final SearchResult<Content> search = contentManager.search(new String[] { MIMETYPE }, - new String[] { "mimeType.mimetype" }, 0, 10); - assertEquals(1, search.getSize()); - } + @Test + public void testBasicMimeSearchWithQueriesAndFields() { + createContentWithMimeAndCheck(MIMETYPE + "/png"); + contentManager.reIndex(); + final SearchResult<Content> search = contentManager.search(new String[] { MIMETYPE }, + new String[] { "mimeType.mimetype" }, 0, 10); + assertEquals(1, search.getSize()); + } - @Test - public void testBasicSearchWithQueriesAndFields() { - createContentWithMimeAndCheck(MIMETYPE); - final SearchResult<Content> search = contentManager.search(new String[] { BODY }, - new String[] { "lastRevision.body" }, 0, 10); - contentManager.reIndex(); - assertEquals(1, search.getSize()); - } + @Test + public void testBasicSearchWithQueriesAndFields() { + createContentWithMimeAndCheck(MIMETYPE); + final SearchResult<Content> search = contentManager.search(new String[] { BODY }, + new String[] { "lastRevision.body" }, 0, 10); + contentManager.reIndex(); + assertEquals(1, search.getSize()); + } - @Test - public void testBasicTitleSearch() { - createContent(); - final SearchResult<Content> search = contentManager.search(TITLE); - contentManager.reIndex(); - assertEquals(1, search.getSize()); - } + @Test + public void testBasicTitleSearch() { + createContent(); + final SearchResult<Content> search = contentManager.search(TITLE); + contentManager.reIndex(); + assertEquals(1, search.getSize()); + } - @Ignore - @Test - public void testtMimeSearch() { - createContentWithMimeAndCheck(MIMETYPE + "/png"); - contentManager.reIndex(); - final SearchResult<Content> search = contentManager.searchMime(BODY, 0, 10, "asb", MIMETYPE); - assertEquals(1, search.getSize()); - } + @Ignore + @Test + public void testtMimeSearch() { + createContentWithMimeAndCheck(MIMETYPE + "/png"); + contentManager.reIndex(); + final SearchResult<Content> search = contentManager.searchMime(BODY, 0, 10, "asb", MIMETYPE); + assertEquals(1, search.getSize()); + } - /** - * This normally fails with mysql (not configured for utf-8), see the - * INSTALL mysql section - */ - @Test - public void testUTF8Persist() { - final Content cnt = contentManager.createContent("汉语/漢語", "汉语/漢語", user, container, TYPE_DOCUMENT); - final Content newCnt = contentManager.find(cnt.getId()); - assertEquals("汉语/漢語", newCnt.getTitle()); - } + /** + * This normally fails with mysql (not configured for utf-8), see the INSTALL + * mysql section + */ + @Test + public void testUTF8Persist() { + final Content cnt = contentManager.createContent("汉语/漢語", "汉语/漢語", user, container, TYPE_DOCUMENT); + final Content newCnt = contentManager.find(cnt.getId()); + assertEquals("汉语/漢語", newCnt.getTitle()); + } } Modified: trunk/src/test/java/cc/kune/core/server/mapper/MapperTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/mapper/MapperTest.java 2011-05-05 03:41:52 UTC (rev 1345) +++ trunk/src/test/java/cc/kune/core/server/mapper/MapperTest.java 2011-05-05 14:46:37 UTC (rev 1346) @@ -39,7 +39,6 @@ import cc.kune.core.shared.domain.UserSNetVisibility; import cc.kune.core.shared.domain.utils.AccessRights; import cc.kune.core.shared.domain.utils.StateToken; -import cc.kune.core.shared.dto.CommentDTO; import cc.kune.core.shared.dto.ContainerDTO; import cc.kune.core.shared.dto.ContainerSimpleDTO; import cc.kune.core.shared.dto.ContentSimpleDTO; @@ -50,7 +49,6 @@ import cc.kune.core.shared.dto.SocialNetworkDataDTO; import cc.kune.core.shared.dto.StateContentDTO; import cc.kune.domain.BasicMimeType; -import cc.kune.domain.Comment; import cc.kune.domain.Container; import cc.kune.domain.Content; import cc.kune.domain.Group; @@ -146,41 +144,6 @@ } @Test - public void testCommentMapper() { - final Content d = createDefContent(); - final Comment comment = new Comment(); - comment.setContent(d); - comment.setText("Some text"); - final User user = new User(); - comment.addPositiveVoter(user); - comment.addPositiveVoter(user); - CommentDTO commentDTO = mapper.map(comment, CommentDTO.class); - assertEquals(0, commentDTO.getNegativeVotersCount()); - assertEquals(0, commentDTO.getAbuseInformersCount()); - assertEquals(1, commentDTO.getPositiveVotersCount()); - comment.addNegativeVoter(user); - comment.addNegativeVoter(user); - commentDTO = mapper.map(comment, CommentDTO.class); - assertEquals(1, commentDTO.getNegativeVotersCount()); - assertEquals(0, commentDTO.getAbuseInformersCount()); - assertEquals(0, commentDTO.getPositiveVotersCount()); - comment.addAbuseInformer(user); - comment.addAbuseInformer(user); - commentDTO = mapper.map(comment, CommentDTO.class); - assertEquals(1, commentDTO.getNegativeVotersCount()); - assertEquals(1, commentDTO.getAbuseInformersCount()); - assertEquals(0, commentDTO.getPositiveVotersCount()); - final Comment childComment = new Comment(); - childComment.setContent(d); - childComment.setParent(comment); - comment.getChilds().add(childComment); - commentDTO = mapper.map(comment, CommentDTO.class); - final CommentDTO childCommentDTO = mapper.map(childComment, CommentDTO.class); - assertEquals(1, comment.getChilds().size()); - assertEquals(commentDTO, childCommentDTO.getParent()); - } - - @Test public void testContentDescriptorMapping() { final Content d = createDefContent(); final StateToken expectedToken = new StateToken(TESTGROUPSHORTNAME, TESTTOOL, "1", "1");