| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.cocoon.samples.flow.java; |
| |
| import org.apache.cocoon.components.flow.java.AbstractContinuable; |
| import org.apache.cocoon.components.flow.java.Continuable; |
| import org.apache.cocoon.components.flow.java.VarMap; |
| import org.apache.cocoon.forms.binding.BindingException; |
| import org.apache.cocoon.forms.flow.java.FormInstance; |
| import org.apache.cocoon.ojb.samples.bean.Employee; |
| |
| import org.apache.ojb.broker.Identity; |
| import org.apache.ojb.broker.PersistenceBroker; |
| import org.apache.ojb.broker.PersistenceBrokerFactory; |
| import org.apache.ojb.broker.query.Criteria; |
| import org.apache.ojb.broker.query.QueryByCriteria; |
| |
| import java.util.ArrayList; |
| import java.util.Collections; |
| import java.util.Comparator; |
| import java.util.Iterator; |
| |
| /** |
| * @version $Id$ |
| */ |
| public class PersistenceFlow extends AbstractContinuable { |
| |
| private transient PersistenceBroker broker; |
| |
| public PersistenceFlow() { |
| this.broker = PersistenceBrokerFactory.defaultPersistenceBroker(); |
| } |
| |
| public void doInsertEmployee() throws BindingException { |
| |
| int id = 1; |
| // Get id as parameter |
| if (getRequest().getParameter("id")!=null) |
| id = Integer.parseInt(getRequest().getParameter("id")); |
| |
| // Create a empty Bean |
| Employee employee = new Employee(); |
| // Fill some initial data to the bean |
| |
| employee.setId(id); |
| // Load form descriptor |
| FormInstance form = new FormInstance("forms/employee.xml"); |
| // Load form binding |
| form.createBinding("forms/employee-binding.xml"); |
| // Load the Bean to the form |
| form.load(employee); |
| // Let Cocoon Forms handle the form |
| form.show("form/employee"); |
| // Update the Bean based on user input |
| form.save(employee); |
| // Update Bean in Database |
| broker.store(employee); |
| // Send response to the user |
| doShowEmployee(); |
| } |
| |
| public void doUpdateEmployee() throws BindingException { |
| // Get id as parameter |
| int id = 1; |
| if (getRequest().getParameter("id")!=null) |
| id = Integer.parseInt(getRequest().getParameter("id")); |
| else |
| throw new IllegalStateException("No parameter 'id'"); |
| |
| // Create a empty Bean |
| Employee employee = new Employee(); |
| // Fill some initial data to the bean |
| employee.setId(id); |
| // Load bean based on the given PrimaryKey |
| employee = (Employee) broker.getObjectByIdentity(new Identity(employee, broker)); |
| // Load form descriptor |
| FormInstance form = new FormInstance("forms/employee.xml"); |
| // Load form binding |
| form.createBinding("forms/employee-binding.xml"); |
| // Load the Bean to the form |
| form.load(employee); |
| // Let Cocoon Forms handle the form |
| form.show("form/employee"); |
| // Update the Bean based on user input |
| form.save(employee); |
| |
| // Update Bean in Database |
| broker.store(employee); |
| |
| // Send response to the user |
| doShowEmployee(); |
| } |
| |
| public void doRemoveEmployee() { |
| // Get id as parameter |
| int id = 1; |
| if (getRequest().getParameter("id")!=null) |
| id = Integer.parseInt(getRequest().getParameter("id")); |
| else |
| throw new IllegalStateException("No parameter 'id'"); |
| |
| // Create a empty Bean |
| Employee employee = new Employee(); |
| // Fill some initial data to the bean |
| employee.setId(id); |
| // Load bean based on the given PrimaryKey |
| employee = (Employee) broker.getObjectByIdentity(new Identity(employee, broker)); |
| // Remove bean |
| broker.delete(employee); |
| // Send response to the user |
| doShowEmployee(); |
| } |
| |
| public void doShowEmployee() { |
| // Query all objects |
| ArrayList results = new ArrayList(); |
| // new Employee().getClass() is a fix for bug COCOON-1969 |
| QueryByCriteria query = new QueryByCriteria(new Employee().getClass(), new Criteria()); |
| for(Iterator i=broker.getCollectionByQuery(query).iterator(); i.hasNext();) { |
| results.add(i.next()); |
| } |
| // Sort result |
| Collections.sort(results, new EmployeeComparator()); |
| // Send response to the user |
| sendPage("page/employee-result", new VarMap().add("employee", results)); |
| } |
| |
| public static class EmployeeComparator implements Comparator, Continuable { |
| public int compare(Object o1, Object o2) { |
| return ((Employee)o1).getId()-((Employee)o2).getId(); |
| } |
| |
| public boolean equals(Object obj) { |
| return true; |
| } |
| } |
| } |