Herw is the codes for my controller.
ViewController.java
Code:
public class ViewController extends SimpleFormController {
private HibernateAttachmentTypeModel model = new HibernateAttachmentTypeModel();
private AttachmentType obj;
public ListController() {
super();
}
@Override
protected Map referenceData(PortletRequest request) throws Exception {
Map tableValue = new HashMap();
List<AttachmentType> attachmenttypes = model.getAllAttachmentType();
tableValue.put("attachmenttypes", attachmenttypes);
return tableValue;
}
@Override
protected void onSubmitAction(ActionRequest request, ActionResponse response, Object command, BindException errors) throws Exception {
Map<?, ?> userInfo = (Map<?, ?>) request.getAttribute(
PortletRequest.USER_INFO);
long addedBy = Long.parseLong(userInfo.get("liferay.user.id").toString());
obj = (AttachmentType) command;
if (obj.getAttachmentTypeId() == null || obj.getAttachmentTypeId().equals("")) {
List<Organization> organizations = new LinkedList<Organization>();
try {
organizations = OrganizationLocalServiceUtil.getService().getUserOrganizations(addedBy);
} catch (Exception e) {
}
long groupId = organizations.get(0).getOrganizationId();
obj.setAddedBy(addedBy);
obj.setDateAdded(new Date());
obj.setGroupId(groupId);
model.addAttachmentType(obj);
} else {
obj.setModifiedBy(addedBy);
obj.setDateModified(new Date());
int modifiedCount = convertStringToInteger(request.getParameter("modifiedCount"));
modifiedCount++;
obj.setModifiedCount(modifiedCount);
model.updateAttachmentType(obj);
}
}
@Override
protected Object formBackingObject(PortletRequest request) throws Exception {
try {
if (attachmentTypeId == null) {
obj = new AttachmentType();
} else if (attachmentTypeId != null) {
obj = model.getAttachmentTypeByAttachmentTypeId(attachmentTypeId);
}
} catch (Exception ex) {
System.out.println("exception happened. = " + ex);
}
return obj;
}
@Override
protected void initBinder(PortletRequest request, PortletRequestDataBinder binder) throws Exception {
binder.registerCustomEditor(AttachmentType.class, new AttachmentTypeEditor());
SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
binder.registerCustomEditor(Date.class, new CustomDateEditor(df, true));
binder.setRequiredFields(new String[]{"code"});
binder.registerCustomEditor(Long.TYPE, new CustomLongEditor());
binder.registerCustomEditor(Integer.TYPE, new CustomIntegerEditor());
super.initBinder(request, binder);
}
@Override
protected ModelAndView handleRenderRequestInternal(RenderRequest request, RenderResponse response) throws Exception {
ModelAndView mav = new ModelAndView("View");
PortletURL url = response.createRenderURL();
url.setPortletMode(request.getPortletMode());
url.setParameter("action", "search" );
mav.addObject("searchurl", url);
url = response.createRenderURL();
url.setPortletMode(request.getPortletMode());
url.setParameter("action", "add");
mav.addObject("addurl", url);
List<AttachmentType> list = model.getAllAttachmentType();
mav.addObject("attachmenttypes", list);
return mav;
}
public int convertStringToInteger(String str) {
int intStr = 0;
try {
if (!str.equals("") && str != null && !str.isEmpty()) {
intStr = Integer.parseInt(str);
}
} catch (Exception ex) {
System.out.println("Exception while pasring a string into integer. " + ex);
}
return intStr;
}
}
SearchController.java
Code:
public class SearchController extends SimpleFormController{
private HibernateAttachmentTypeModel model = new HibernateAttachmentTypeModel();
private SearchFormData searchFormData;
public SearchController() {
System.out.println("inside SeachController.");
}
@Override
protected Object formBackingObject(PortletRequest request) throws Exception {
System.out.println("inside formbacking object method for search controller");
SearchFormData data = new SearchFormData();
return data;
}
@Override
protected void initBinder(PortletRequest request, PortletRequestDataBinder binder) throws Exception {
System.out.println("inside initBinder method for search controller");
binder.registerCustomEditor(AttachmentType.class, new AttachmentTypeEditor());
SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
binder.registerCustomEditor(Date.class, new CustomDateEditor(df, true));
binder.registerCustomEditor(Long.TYPE, new CustomLongEditor());
}
@Override
protected ModelAndView handleRenderRequestInternal(RenderRequest request, RenderResponse response) throws Exception {
ModelAndView mav = super.handleRenderRequestInternal(request, response);
PortletURL url = response.createRenderURL();
url.setPortletMode(request.getPortletMode());
url.setParameter("action", "add");
mav.addObject("addurl", url);
url = response.createRenderURL();
url.setPortletMode(request.getPortletMode());
url.setParameter("action", "list");
mav.addObject("listurl", url);
return mav;
}
@Override
protected ModelAndView onSubmitRender(RenderRequest request, RenderResponse response, Object command, BindException errors) throws Exception {
System.out.println("inside onSubmitRender in searchController.");
ModelAndView mav = new ModelAndView();
searchFormData = (SearchFormData) command;
Collection results = filterResult(command);
if (results.size() < 1){
errors.reject("not found", "AttachmentTypes are not found");
return showForm(request, response, errors);
}
if (results.size() > 1){
mav = new ModelAndView("AttachmentTypeList", "attachmenttypes", results);
}
if (results.size() == 1){
AttachmentType attachmentType = (AttachmentType) results.iterator().next();
mav = new ModelAndView("AddAttachmentType", "attachmenttype", attachmentType);
}
return mav;
}
public Collection<AttachmentType> filterResult(Object command){
System.out.println("inside filterResults in searchController.");
Collection<AttachmentType> collection = new ArrayList<AttachmentType>();
searchFormData = (SearchFormData) command;
System.out.println("code from search form = "+ searchFormData.getCode());
System.out.println("attachmentType.getCode() = " + searchFormData.getCode());
System.out.println("timeperiod = " + searchFormData.getTimePeriod());
System.out.println("startCreateDate = " + searchFormData.getStartCreateDate());
if (!searchFormData.getCode().isEmpty()){
model.setAttachmentTypeFilters(HibernateAttachmentTypeModel.AttachmentType_Filters.AttachmentTypeCode, searchFormData.getCode());
}else{
model.setAttachmentTypeFilters(HibernateAttachmentTypeModel.AttachmentType_Filters.AttachmentTypeCode, null);
}
if (!searchFormData.getDescription().isEmpty()){
model.setAttachmentTypeFilters(HibernateAttachmentTypeModel.AttachmentType_Filters.AttachmentTypeDescription, searchFormData.getDescription());
}else{
model.setAttachmentTypeFilters(HibernateAttachmentTypeModel.AttachmentType_Filters.AttachmentTypeDescription, null);
}
if (searchFormData.getGroupId() != null && searchFormData.getGroupId() != 0 ){
model.setAttachmentTypeFilters(HibernateAttachmentTypeModel.AttachmentType_Filters.GroupId, searchFormData.getGroupId());
}else{
model.setAttachmentTypeFilters(HibernateAttachmentTypeModel.AttachmentType_Filters.GroupId, null);
}
if (searchFormData.getAddedBy() != null && searchFormData.getAddedBy()!= 0){
model.setAttachmentTypeFilters(HibernateAttachmentTypeModel.AttachmentType_Filters.AddedBy, searchFormData.getAddedBy());
}else{
model.setAttachmentTypeFilters(HibernateAttachmentTypeModel.AttachmentType_Filters.AddedBy, null);
}
if(searchFormData.getModifiedBy() != null && searchFormData.getModifiedBy()!= 0){
model.setAttachmentTypeFilters(HibernateAttachmentTypeModel.AttachmentType_Filters.ModifiedBy, searchFormData.getModifiedBy());
}else{
model.setAttachmentTypeFilters(HibernateAttachmentTypeModel.AttachmentType_Filters.ModifiedBy, null);
}
if (searchFormData.getStartCreateDate() != null && searchFormData.getTimePeriod().equals("Before")){
System.out.println("inside startCreateDate filter.");
model.setAttachmentTypeFilters(HibernateAttachmentTypeModel.AttachmentType_Filters.AddedDateBefore, searchFormData.getStartCreateDate());
}else{
model.setAttachmentTypeFilters(HibernateAttachmentTypeModel.AttachmentType_Filters.AddedDateBefore, null);
}
collection = model.getAttachmentTypesByFilters();
System.out.println("collection.size() = " + collection.size());
return collection;
}
}
Thanks,
Anita