blob: e47437b9891557260bd1383c8f77b66ef3305220 [file] [log] [blame]
/*
* 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;
}
}
}