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"
+"";
+
+
+
}