Author: eschwert
Date: Wed Feb 22 17:29:26 2012
New Revision: 1292408
URL: http://svn.apache.org/viewvc?rev=1292408&view=rev
Log:
OPENMEETINGS-60 setUserObjectAndGenerateRoomHash method + roomlink in jira
Issue-Default-View + Room-Select-List for issues as custom field.
Added:
incubator/openmeetings/branches/jira-plugin/src/main/resources/templates/omrooms/enter.vm
Removed:
incubator/openmeetings/branches/jira-plugin/src/test/java/org/openmeetings/jira/plugin/jira/customfields/RoomNameFieldTest.java
Modified:
incubator/openmeetings/branches/jira-plugin/src/main/java/org/openmeetings/jira/plugin/gateway/OmGateway.java
incubator/openmeetings/branches/jira-plugin/src/main/java/org/openmeetings/jira/plugin/jira/customfields/RoomSelectList.java
incubator/openmeetings/branches/jira-plugin/src/main/java/org/openmeetings/jira/plugin/servlet/RoomsServlet.java
incubator/openmeetings/branches/jira-plugin/src/main/resources/templates/customfields/room-select-list/edit.vm
incubator/openmeetings/branches/jira-plugin/src/main/resources/templates/customfields/room-select-list/view.vm
Modified:
incubator/openmeetings/branches/jira-plugin/src/main/java/org/openmeetings/jira/plugin/gateway/OmGateway.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/branches/jira-plugin/src/main/java/org/openmeetings/jira/plugin/gateway/OmGateway.java?rev=1292408&r1=1292407&r2=1292408&view=diff
==============================================================================
---
incubator/openmeetings/branches/jira-plugin/src/main/java/org/openmeetings/jira/plugin/gateway/OmGateway.java
(original)
+++
incubator/openmeetings/branches/jira-plugin/src/main/java/org/openmeetings/jira/plugin/gateway/OmGateway.java
Wed Feb 22 17:29:26 2012
@@ -77,7 +77,7 @@ public class OmGateway {
SAXException,
ParserConfigurationException, DocumentException{
- String testURL =
"http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationExternalTypeAndTopBarOption?"
+
+ String restURL =
"http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationExternalTypeAndTopBarOption?"
+
"SID="+this.getSessionId()+
"&name="+name+
"&roomtypes_id="+roomType.toString()+
@@ -95,7 +95,7 @@ public class OmGateway {
"&allowRecording="+isAllowedRecording.toString()+
"&hideTopBar=false";
- LinkedHashMap<String, Element> result =
omRestService.call(testURL, null);
+ LinkedHashMap<String, Element> result =
omRestService.call(restURL, null);
String roomId = result.get("return").getStringValue();
@@ -117,7 +117,7 @@ public class OmGateway {
DocumentException{
- String testURL =
"http://localhost:5080/openmeetings/services/RoomService/updateRoomWithModerationAndQuestions?"
+
+ String restURL =
"http://localhost:5080/openmeetings/services/RoomService/updateRoomWithModerationAndQuestions?"
+
"SID="+this.getSessionId()+
"&room_id="+roomId.toString()+
"&name="+roomname.toString()+
@@ -138,7 +138,7 @@ public class OmGateway {
//
"&allowRecording="+isAllowedRecording+
// "&hideTopBar=false";
- LinkedHashMap<String, Element> result =
omRestService.call(testURL, null);
+ LinkedHashMap<String, Element> result =
omRestService.call(restURL, null);
log.info("addRoomWithModerationExternalTypeAndTopBarOption with
ID: ",result.get("return").getStringValue());
@@ -146,6 +146,39 @@ public class OmGateway {
return Long.valueOf(updateRoomId);
}
+
+ public String setUserObjectAndGenerateRoomHash (String username ,
String firstname ,
+ String lastname , String profilePictureUrl , String
email , Long externalUserId ,
+ String externalUserType , Long room_id , int
becomeModeratorAsInt , int showAudioVideoTestAsInt )
+
throws
XPathExpressionException,
+
IOException,
+
ServletException,
+
SAXException,
+
ParserConfigurationException,
+
DocumentException
+ {
+
+ String restURL =
"http://localhost:5080/openmeetings/services/UserService/setUserObjectAndGenerateRoomHash?"
+
+ "SID="+this.getSessionId()+
+ "&username="+username+
+ "&firstname="+firstname+
+ "&lastname="+lastname+
+ "&profilePictureUrl="+profilePictureUrl+
+ "&email="+email+
+ "&externalUserId="+externalUserId+
+ "&externalUserType="+externalUserType+
+ "&room_id="+room_id+
+ "&becomeModeratorAsInt="+becomeModeratorAsInt+
+
"&showAudioVideoTestAsInt="+showAudioVideoTestAsInt;
+
+
+ LinkedHashMap<String, Element> result =
omRestService.call(restURL, null);
+
+ String roomHash =
result.get("return").getStringValue();
+
+ return roomHash;
+
+ }
public String getSessionId() {
return sessionId;
Modified:
incubator/openmeetings/branches/jira-plugin/src/main/java/org/openmeetings/jira/plugin/jira/customfields/RoomSelectList.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/branches/jira-plugin/src/main/java/org/openmeetings/jira/plugin/jira/customfields/RoomSelectList.java?rev=1292408&r1=1292407&r2=1292408&view=diff
==============================================================================
---
incubator/openmeetings/branches/jira-plugin/src/main/java/org/openmeetings/jira/plugin/jira/customfields/RoomSelectList.java
(original)
+++
incubator/openmeetings/branches/jira-plugin/src/main/java/org/openmeetings/jira/plugin/jira/customfields/RoomSelectList.java
Wed Feb 22 17:29:26 2012
@@ -5,39 +5,60 @@ import org.openmeetings.jira.plugin.ao.o
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.atlassian.jira.issue.context.JiraContextNode;
-import com.atlassian.jira.issue.customfields.converters.SelectConverter;
-import com.atlassian.jira.issue.customfields.converters.StringConverter;
-import com.atlassian.jira.issue.customfields.manager.GenericConfigManager;
-import com.atlassian.jira.issue.customfields.manager.OptionsManager;
-import com.atlassian.jira.issue.customfields.option.Options;
-import
com.atlassian.jira.issue.customfields.persistence.CustomFieldValuePersister;
-import com.atlassian.jira.issue.customfields.persistence.PersistenceFieldType;
-import com.atlassian.jira.issue.customfields.view.CustomFieldParams;
-import com.atlassian.jira.issue.Issue;
-import com.atlassian.jira.issue.fields.CustomField;
-import com.atlassian.jira.issue.fields.config.FieldConfig;
-import com.atlassian.jira.issue.fields.layout.field.FieldLayoutItem;
+//import com.atlassian.jira.issue.context.JiraContextNode;
+//import com.atlassian.jira.issue.customfields.converters.SelectConverter;
+//import com.atlassian.jira.issue.customfields.converters.StringConverter;
+//import com.atlassian.jira.issue.customfields.manager.GenericConfigManager;
+//import com.atlassian.jira.issue.customfields.manager.OptionsManager;
+//import com.atlassian.jira.issue.customfields.option.Options;
+//import
com.atlassian.jira.issue.customfields.persistence.CustomFieldValuePersister;
+//import
com.atlassian.jira.issue.customfields.persistence.PersistenceFieldType;
+//import com.atlassian.jira.issue.customfields.view.CustomFieldParams;
+//import com.atlassian.jira.issue.Issue;
+//import com.atlassian.jira.issue.fields.CustomField;
+//import com.atlassian.jira.issue.fields.config.FieldConfig;
+//import com.atlassian.jira.issue.fields.layout.field.FieldLayoutItem;
import java.util.List;
import java.util.Map;
+//import com.atlassian.jira.issue.customfields.impl.AbstractSingleFieldType;
+import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.customfields.impl.SelectCFType;
import com.atlassian.jira.util.ErrorCollection;
-public class RoomSelectList extends SelectCFType {
- private static final Logger log =
LoggerFactory.getLogger(RoomSelectList.class);
- //private final OptionsManager optionsManager;
- //private static SelectConverter selectConverter;
- private final RoomService roomService;
-
- public RoomSelectList(CustomFieldValuePersister customFieldValuePersister,
StringConverter stringConverter, SelectConverter selectConverter,
OptionsManager optionsManager, GenericConfigManager genericConfigManager,
RoomService roomService) {
- super(customFieldValuePersister, stringConverter, selectConverter,
optionsManager, genericConfigManager);
- this.roomService = roomService;
- //this.optionsManager = optionsManager;
-}
+
+
+import com.atlassian.jira.issue.customfields.impl.AbstractSingleFieldType;
+import com.atlassian.jira.issue.customfields.impl.FieldValidationException;
+import com.atlassian.jira.issue.customfields.impl.TextCFType;
+import com.atlassian.jira.issue.customfields.manager.GenericConfigManager;
+import
com.atlassian.jira.issue.customfields.persistence.CustomFieldValuePersister;
+import com.atlassian.jira.issue.customfields.persistence.PersistenceFieldType;
+import com.atlassian.jira.issue.fields.CustomField;
+import com.atlassian.jira.issue.fields.config.FieldConfig;
+import com.atlassian.jira.issue.fields.layout.field.FieldLayoutItem;
+
+ public class RoomSelectList extends TextCFType {
+ private static final Logger log =
LoggerFactory.getLogger(RoomSelectList.class);
+ //private final OptionsManager optionsManager;
+ //private static SelectConverter selectConverter;
+ private final RoomService roomService;
+
+// public RoomSelectList(CustomFieldValuePersister
customFieldValuePersister, StringConverter stringConverter, SelectConverter
selectConverter, OptionsManager optionsManager, GenericConfigManager
genericConfigManager, RoomService roomService) {
+// super(customFieldValuePersister, stringConverter, selectConverter,
optionsManager, genericConfigManager);
+// this.roomService = roomService;
+// //this.optionsManager = optionsManager;
+
- @Override
+
+ public RoomSelectList(CustomFieldValuePersister
customFieldValuePersister,
+ GenericConfigManager genericConfigManager, RoomService
roomService) {
+ super(customFieldValuePersister, genericConfigManager);
+ this.roomService = roomService;
+ }
+
+ @Override
public Map<String, Object> getVelocityParameters(final Issue issue,
final CustomField field,
final FieldLayoutItem
fieldLayoutItem) {
@@ -67,33 +88,48 @@ public class RoomSelectList extends Sele
}
@Override
- public PersistenceFieldType getDatabaseType()
- {
- return PersistenceFieldType.TYPE_LIMITED_TEXT;
- }
+ protected PersistenceFieldType getDatabaseType()
+ {
+ return PersistenceFieldType.TYPE_LIMITED_TEXT;
+ }
+
@Override
- public void validateFromParams(CustomFieldParams relevantParams,
ErrorCollection errorCollectionToAddTo, FieldConfig config)
+ protected Integer getObjectFromDbValue(final Object databaseValue)
+ throws FieldValidationException
{
-
+ return getSingularObjectFromString((String) databaseValue);
}
-
-// @Override
-// public Options getOptions(FieldConfig config, JiraContextNode
jiraContextNode)
-// {
-// return this.optionsManager.getOptions(config);
-// }
-
-// @Override
-// public Object getValueFromIssue(CustomField field, Issue issue){
-//
-// issue.getCustomFieldValue(field);
-// return issue;
-//
-// }
-//
-// public Options getOptions(FieldConfig config, JiraContextNode
jiraContextNode)
-// {
-// return this.optionsManager.getOptions(config);
-// }
+
+ @Override
+ public Integer getSingularObjectFromString(final String string)
+ throws FieldValidationException
+ {
+ if (string == null)
+ return null;
+ try
+ {
+ final Integer decimal = new Integer(string);
+
+ return decimal;
+ }
+ catch (NumberFormatException ex)
+ {
+ throw new FieldValidationException("Not a valid number: "+string);
+ }
+ }
+
+ @Override
+ public String getStringFromSingularObject(Object singularObject) {
+ if (singularObject == null)
+ return "";
+ // format
+ return singularObject.toString();
+ }
+
+ @Override
+ protected Object getDbValueFromObject(Object customFieldObject) {
+ // TODO Auto-generated method stub
+ return getStringFromSingularObject(customFieldObject);
+ }
}
\ No newline at end of file
Modified:
incubator/openmeetings/branches/jira-plugin/src/main/java/org/openmeetings/jira/plugin/servlet/RoomsServlet.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/branches/jira-plugin/src/main/java/org/openmeetings/jira/plugin/servlet/RoomsServlet.java?rev=1292408&r1=1292407&r2=1292408&view=diff
==============================================================================
---
incubator/openmeetings/branches/jira-plugin/src/main/java/org/openmeetings/jira/plugin/servlet/RoomsServlet.java
(original)
+++
incubator/openmeetings/branches/jira-plugin/src/main/java/org/openmeetings/jira/plugin/servlet/RoomsServlet.java
Wed Feb 22 17:29:26 2012
@@ -36,10 +36,12 @@ public final class RoomsServlet extends
private OmGateway omGateway;
private UserManager userManager;
private com.atlassian.jira.user.util.UserManager jiraUserManager;
+ private String roomURL;
private static final String LIST_BROWSER_TEMPLATE =
"/templates/omrooms/list.vm";
private static final String NEW_BROWSER_TEMPLATE =
"/templates/omrooms/new.vm";
private static final String EDIT_BROWSER_TEMPLATE =
"/templates/omrooms/edit.vm";
+ private static final String ENTER_BROWSER_TEMPLATE =
"/templates/omrooms/enter.vm";
public RoomsServlet(RoomService roomService, TemplateRenderer
templateRenderer, OmGateway omGateway, com.atlassian.jira.user.util.UserManager
jiraUserManager, UserManager userManager)
{
@@ -109,6 +111,78 @@ public final class RoomsServlet extends
Integer id = Integer.valueOf(req.getParameter("key"));
roomService.delete(id);
res.sendRedirect(req.getContextPath() +
"/plugins/servlet/openmeetingsrooms");
+ }else if("y".equals(req.getParameter("enter"))){
+ String iframe_d;
+ try {
+ if(omGateway.loginUser()){
+
+// roomId =
omGateway.setUserObjectAndGenerateRoomHash(
+// username,
+// firstname,
+// lastname,
+// profilePictureUrl,
+// email,
+// externalUserId,
+// externalUserType,
+// room_id,
+// becomeModeratorAsInt,
+//
showAudioVideoTestAsInt);
+ Long roomId =
Long.valueOf(req.getParameter("roomId"));
+
+ String roomHash =
omGateway.setUserObjectAndGenerateRoomHash(
+ "username",
+ "firstname",
+ "lastname",
+ "profilePictureUrl",
+ "[email protected]",
+ 1L,
+ "externalUserType",
+ roomId,
+ 1,
+ 1);
+
+ if(!roomHash.isEmpty()){
+
+ String url = "localhost";
+ String port = "5080";
+
+ this.roomURL =
"http://"+url+":"+port+
+
"/openmeetings/?"+
+ "scopeRoomId="
+ roomId +
+ "&secureHash="
+roomHash+
+ "&language=1"+
+
"&lzproxied=solo";
+
+
+// printf("<iframe src='%s'
width='%s' height='600px' />",$iframe_d,
+// "100%");
+
+ }
+
+ }
+ } catch (XPathExpressionException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (SAXException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (ParserConfigurationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (DocumentException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ // Render the list of issues (list.vm) if no params are passed
in
+ //List<Room> rooms = roomService.all();
+ //List<Room> rooms = roomService.allNotDeleted();
+ Map<String, Object> context = Maps.newHashMap();
+
+ context.put("roomURL", this.roomURL);
+ res.setContentType("text/html;charset=utf-8");
+ // Pass in the list of rooms as the context
+ templateRenderer.render(ENTER_BROWSER_TEMPLATE, context,
res.getWriter());
}else {
// Render the list of issues (list.vm) if no params are passed in
//List<Room> rooms = roomService.all();
Modified:
incubator/openmeetings/branches/jira-plugin/src/main/resources/templates/customfields/room-select-list/edit.vm
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/branches/jira-plugin/src/main/resources/templates/customfields/room-select-list/edit.vm?rev=1292408&r1=1292407&r2=1292408&view=diff
==============================================================================
---
incubator/openmeetings/branches/jira-plugin/src/main/resources/templates/customfields/room-select-list/edit.vm
(original)
+++
incubator/openmeetings/branches/jira-plugin/src/main/resources/templates/customfields/room-select-list/edit.vm
Wed Feb 22 17:29:26 2012
@@ -6,7 +6,7 @@
<option value="">$i18n.getText("common.words.none")</option>
#end
#foreach ($option in $rooms)
- <option value=$option.getRoomId()>$option.getName()</option>
+ <option #if ($value == $option.getRoomId().toString())
selected="selected"#end
value=$textutils.htmlEncode($option.getRoomId().toString())
>$option.getName()</option>
#end
</select>
#customControlFooter ($action $customField.id
$fieldLayoutItem.fieldDescription $displayParameters $auiparams)
\ No newline at end of file
Modified:
incubator/openmeetings/branches/jira-plugin/src/main/resources/templates/customfields/room-select-list/view.vm
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/branches/jira-plugin/src/main/resources/templates/customfields/room-select-list/view.vm?rev=1292408&r1=1292407&r2=1292408&view=diff
==============================================================================
---
incubator/openmeetings/branches/jira-plugin/src/main/resources/templates/customfields/room-select-list/view.vm
(original)
+++
incubator/openmeetings/branches/jira-plugin/src/main/resources/templates/customfields/room-select-list/view.vm
Wed Feb 22 17:29:26 2012
@@ -1,6 +1,4 @@
#if ($value)
- RoomURL: "$!value.toString()"
-#else
-undefined
-System.out.println("value view.vm", $value)
+##$!value.toString()
+ <a
href="$requestContext.baseUrl/plugins/servlet/openmeetingsrooms?enter=y&roomId=$textutils.htmlEncode($value.toString())">Link
to room</a>
#end
\ No newline at end of file
Added:
incubator/openmeetings/branches/jira-plugin/src/main/resources/templates/omrooms/enter.vm
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/branches/jira-plugin/src/main/resources/templates/omrooms/enter.vm?rev=1292408&view=auto
==============================================================================
---
incubator/openmeetings/branches/jira-plugin/src/main/resources/templates/omrooms/enter.vm
(added)
+++
incubator/openmeetings/branches/jira-plugin/src/main/resources/templates/omrooms/enter.vm
Wed Feb 22 17:29:26 2012
@@ -0,0 +1,8 @@
+<html>
+<head>
+ <title>Edit Issue — Issue CRUD Tutorial</title>
+ <meta name="decorator" content="atl.general">
+</head>
+<body class="page-type-admin">
+<iframe name="IframeName" src=$roomURL width='100%' height='600px'></iframe>
+</body>
\ No newline at end of file