Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java =================================================================== diff -u -rfca7f5f4bc72061fa82b651377d299a76ed9d090 -r8773d184c34809bac6172def0c7ad0fc26fe515b --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision fca7f5f4bc72061fa82b651377d299a76ed9d090) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision 8773d184c34809bac6172def0c7ad0fc26fe515b) @@ -30,6 +30,7 @@ import java.util.List; import java.util.Set; import java.util.TreeSet; +import java.util.Vector; import org.apache.log4j.Logger; import org.lamsfoundation.lams.authoring.ObjectExtractor; @@ -40,6 +41,7 @@ import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.LearningLibrary; +import org.lamsfoundation.lams.learningdesign.License; import org.lamsfoundation.lams.learningdesign.Transition; import org.lamsfoundation.lams.learningdesign.dao.hibernate.ActivityDAO; import org.lamsfoundation.lams.learningdesign.dao.hibernate.GroupDAO; @@ -64,6 +66,8 @@ import org.lamsfoundation.lams.usermanagement.dao.hibernate.WorkspaceFolderDAO; import org.lamsfoundation.lams.usermanagement.exception.UserException; import org.lamsfoundation.lams.usermanagement.exception.WorkspaceFolderException; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.wddx.FlashMessage; import org.lamsfoundation.lams.util.wddx.WDDXProcessor; @@ -580,5 +584,17 @@ return flashMessage.serializeMessage(); } + /** @see org.lamsfoundation.lams.authoring.service.IAuthoringService#getAvailableLicenses() */ + public Vector getAvailableLicenses() { + List licenses = licenseDAO.findAll(License.class); + Vector licenseDTOList = new Vector(licenses.size()); + Iterator iter = licenses.iterator(); + while ( iter.hasNext() ) { + License element = (License) iter.next(); + licenseDTOList.add(element.getLicenseDTO(Configuration.get(ConfigurationKeys.SERVER_URL))); + } + return licenseDTOList; + } + } \ No newline at end of file Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java =================================================================== diff -u -re2c331dca808f11e265ad7467a38bac5dc3912e8 -r8773d184c34809bac6172def0c7ad0fc26fe515b --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java (.../IAuthoringService.java) (revision e2c331dca808f11e265ad7467a38bac5dc3912e8) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java (.../IAuthoringService.java) (revision 8773d184c34809bac6172def0c7ad0fc26fe515b) @@ -24,6 +24,7 @@ import java.io.IOException; import java.util.List; +import java.util.Vector; import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.exception.LearningDesignException; @@ -199,5 +200,14 @@ * @return String The new tool content id in WDDX Format */ public String getToolContentID(Long toolID) throws IOException; - + + /** Get the available licenses. This will include our supported Creative Common + * licenses and an "OTHER" license which may be used for user entered license details. + * The picture url supplied should be a full URL i.e. if it was a relative URL in the + * database, it should have been converted to a complete server URL (starting http://) + * before sending to the client. + * + * @return Vector of LicenseDTO objects. It is a Vector to ensure compatibility with WDDX + */ + public Vector getAvailableLicenses(); } Index: lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java =================================================================== diff -u -r49de4737694691f60400ecd00745eaa646bcd724 -r8773d184c34809bac6172def0c7ad0fc26fe515b --- lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java (.../AuthoringAction.java) (revision 49de4737694691f60400ecd00745eaa646bcd724) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java (.../AuthoringAction.java) (revision 8773d184c34809bac6172def0c7ad0fc26fe515b) @@ -24,6 +24,7 @@ import java.io.IOException; import java.io.PrintWriter; +import java.util.Vector; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -39,6 +40,7 @@ import org.lamsfoundation.lams.usermanagement.exception.UserException; import org.lamsfoundation.lams.usermanagement.exception.WorkspaceFolderException; import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.util.wddx.FlashMessage; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -200,5 +202,39 @@ } + /** + * This method returns a list of all available license in + * WDDX format. + * + * This will include our supported Creative Common + * licenses and an "OTHER" license which may be used for user entered license details. + * The picture url supplied should be a full URL i.e. if it was a relative URL in the + * database, it should have been converted to a complete server URL (starting http://) + * before sending to the client. + * + * @return String The required information in WDDX format + * @throws IOException + */ + public ActionForward getAvailableLicenses(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response)throws ServletException, Exception{ + FlashMessage flashMessage = null; + try { + IAuthoringService authoringService = getAuthoringService(); + Vector licenses = authoringService.getAvailableLicenses(); + flashMessage = new FlashMessage("getAvailableLicenses",licenses); + } catch (Exception e) { + flashMessage = new FlashMessage("getAvailableLicenses", + "License details unavailable due to system error :" + e.getMessage(), + FlashMessage.ERROR); + } + + PrintWriter writer = response.getWriter(); + writer.println(flashMessage.serializeMessage()); + return null; + } + + } Index: lams_central/test/java/org/lamsfoundation/lams/authoring/service/TestAuthoringService.java =================================================================== diff -u -r8628fad036956ba43219abfd392f4913069c3dd8 -r8773d184c34809bac6172def0c7ad0fc26fe515b --- lams_central/test/java/org/lamsfoundation/lams/authoring/service/TestAuthoringService.java (.../TestAuthoringService.java) (revision 8628fad036956ba43219abfd392f4913069c3dd8) +++ lams_central/test/java/org/lamsfoundation/lams/authoring/service/TestAuthoringService.java (.../TestAuthoringService.java) (revision 8773d184c34809bac6172def0c7ad0fc26fe515b) @@ -25,10 +25,15 @@ import java.io.IOException; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; +import java.util.Vector; -import org.lamsfoundation.lams.test.AbstractLamsTestCase; import org.lamsfoundation.lams.learningdesign.dao.hibernate.LearningDesignDAO; +import org.lamsfoundation.lams.learningdesign.dto.LicenseDTO; import org.lamsfoundation.lams.learningdesign.exception.LearningDesignException; +import org.lamsfoundation.lams.test.AbstractLamsTestCase; import org.lamsfoundation.lams.usermanagement.dao.hibernate.UserDAO; import org.lamsfoundation.lams.usermanagement.dao.hibernate.WorkspaceFolderDAO; import org.lamsfoundation.lams.usermanagement.exception.UserException; @@ -130,6 +135,53 @@ assertTrue("Finds ruby theme", str.indexOf("ruby") != -1); } + public void testGetAvailableLicenses() throws Exception{ + String otherLicenseCode = "other"; + Set ccCodes = new HashSet(); // creative commons codes + ccCodes.add("by-nc-sa"); + ccCodes.add("by-nd"); + ccCodes.add("by-nc-nd"); + ccCodes.add("by-nc"); + ccCodes.add("by-sa"); + + Vector v = authService.getAvailableLicenses(); + assertNotNull("getAvailableLicenses() returns some values",v); + assertTrue("getAvailableLicenses() returns 6 licenses", v.size() == 6); + + // now check that by-nc-sa is default and that the expected five + // commons licenses + other exists. For each one, check each field + // is populated for the creative commons entries. Other has a blank + // url and picture url + Iterator iter = v.iterator(); + int numDefaultLicenses = 0; + boolean otherLicenseCodeFound = false; + while (iter.hasNext()) { + + LicenseDTO element = (LicenseDTO) iter.next(); + String code = element.getCode(); + + assertNotNull("License has a code", code); + assertNotNull("License "+code+" has an id ", element.getLicenseID()); + assertNotNull("License "+code+" has a name ", element.getName()); + if ( element.getDefaultLicense().booleanValue() ) { + numDefaultLicenses ++; + } + + if ( code.equals(otherLicenseCode) ) { + otherLicenseCodeFound = true; + } else if ( ccCodes.contains(code) ) { + assertNotNull("License "+code+" has a URL ", element.getUrl()); + assertNotNull("License "+code+" has an pictureURL ", element.getPictureURL()); + ccCodes.remove(code); + } else { + fail("License has an unexpected or duplicated code "+code); + } + + } + assertTrue("OTHER license code found ",otherLicenseCodeFound); + assertTrue("All expected creative commons licenses were found ",ccCodes.size()==0); + + } /* ******* WDDX Packets **************************************/ private static final String LEARNING_DESIGN_PART_A = @@ -399,4 +451,7 @@ +"getThemes" +"3.0" +""; + + + }