Skip to content

Commit

Permalink
added Provider datatype and its handler
Browse files Browse the repository at this point in the history
  • Loading branch information
k-joseph committed Mar 1, 2013
1 parent 74ffd4e commit 66946cb
Show file tree
Hide file tree
Showing 2 changed files with 140 additions and 0 deletions.
@@ -0,0 +1,48 @@
/**
* The contents of this file are subject to the OpenMRS Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://license.openmrs.org
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* Copyright (C) OpenMRS, LLC. All Rights Reserved.
*/
package org.openmrs.customdatatype.datatype;

import org.apache.commons.lang.StringUtils;
import org.openmrs.Provider;
import org.openmrs.api.context.Context;
import org.openmrs.customdatatype.SerializingCustomDatatype;
import org.springframework.stereotype.Component;

/**
* Datatype for Provider, represented by org.openmrs.Provider.
* @since 1.9

This comment has been minimized.

Copy link
@wluyima

wluyima Mar 3, 2013

should be 1.10

*/
@Component
public class ProviderDatatype extends SerializingCustomDatatype<Provider> {

/**
* @see org.openmrs.customdatatype.SerializingCustomDatatype#serialize(java.lang.Object)
*/
@Override
public String serialize(Provider typedValue) {
if (typedValue == null)
return null;
return typedValue.getUuid();
}

/**
* @see org.openmrs.customdatatype.SerializingCustomDatatype#deserialize(java.lang.String)
*/
@Override
public Provider deserialize(String serializedValue) {
if (StringUtils.isEmpty(serializedValue))
return null;
return Context.getProviderService().getProviderByUuid(serializedValue);
}
}
@@ -0,0 +1,92 @@
/**
* The contents of this file are subject to the OpenMRS Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://license.openmrs.org
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* Copyright (C) OpenMRS, LLC. All Rights Reserved.
*/
package org.openmrs.web.attribute.handler;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.openmrs.Provider;
import org.openmrs.api.context.Context;
import org.openmrs.customdatatype.CustomDatatype;
import org.openmrs.customdatatype.InvalidCustomValueException;
import org.openmrs.customdatatype.datatype.ProviderDatatype;
import org.openmrs.messagesource.MessageSourceService;
import org.springframework.stereotype.Component;

/**
* Handler for the Provider custom datatype
*/
@Component
public class ProviderDatatypeHandler implements FieldGenDatatypeHandler<ProviderDatatype, Provider> {

This comment has been minimized.

Copy link
@wluyima

wluyima Mar 3, 2013

Rename this to ProviderFieldGenDatatypeHandler


/**
* @see org.openmrs.customdatatype.CustomDatatypeHandler#setHandlerConfiguration(java.lang.String)
*/
@Override
public void setHandlerConfiguration(String arg0) {
// not used
}

/**
* @see org.openmrs.web.attribute.handler.FieldGenDatatypeHandler#getWidgetName()
*/
@Override
public String getWidgetName() {
return "provider";
}

/**
* @see org.openmrs.web.attribute.handler.FieldGenDatatypeHandler#getWidgetConfiguration()
*/
@Override
public Map<String, Object> getWidgetConfiguration() {

This comment has been minimized.

Copy link
@wluyima

wluyima Mar 3, 2013

May be you can set label for the field here as a configuration property since this can differ depending on the form where the widget is being used Or even to specify if the field is required or not

return null;
}

/**
* @see org.openmrs.web.attribute.handler.FieldGenDatatypeHandler#getValue(org.openmrs.customdatatype.CustomDatatype, javax.servlet.http.HttpServletRequest, java.lang.String)
*/
@Override
public Provider getValue(ProviderDatatype datatype, HttpServletRequest request,
String formFieldName) throws InvalidCustomValueException {
String result = request.getParameter(formFieldName);
if (StringUtils.isBlank(result))
return null;
try {
return Context.getProviderService().getProviderByUuid(result);
}
catch (Exception e) {
throw new InvalidCustomValueException("Invalid provider: " + result);
}
}

/**
* @see org.openmrs.web.attribute.handler.HtmlDisplayableDatatypeHandler#toHtmlSummary(org.openmrs.customdatatype.CustomDatatype, java.lang.String)
*/
@Override
public CustomDatatype.Summary toHtmlSummary(CustomDatatype<Provider> datatype, String valueReference) {
return new CustomDatatype.Summary(valueReference, true);

This comment has been minimized.

Copy link
@wluyima

wluyima Mar 3, 2013

Shouldn't this be name and description or just name and definitely this isn't the full representation

}

/**
* @see org.openmrs.web.attribute.handler.HtmlDisplayableDatatypeHandler#toHtml(org.openmrs.customdatatype.CustomDatatype, java.lang.String)
*/
@Override
public String toHtml(CustomDatatype<Provider> datatype, String valueReference) {

This comment has been minimized.

Copy link
@wluyima

wluyima Mar 3, 2013

I think this should be the name

return valueReference;
}
}

0 comments on commit 66946cb

Please sign in to comment.