/*
Name:
- CompanyRepository
Description:
-
Requires:
-
Provides:
-
Part of: ProcessPuzzle Framework, Domain and Business Model Ready Architecture. Provides content, workflow and social networking functionality.
http://www.processpuzzle.com
ProcessPuzzle - Content and Workflow Management Integration Business Platform
Author(s):
- Zsolt Zsuffa
Copyright: (C) 2011 This program is free software: you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation, either version 3 of the License,
or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.processpuzzle.party.domain;
import java.util.ArrayList;
import java.util.List;
import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext;
import com.processpuzzle.commons.persistence.PersistenceStrategy;
import com.processpuzzle.commons.persistence.RepositoryResultSet;
import com.processpuzzle.commons.persistence.UnitOfWork;
import com.processpuzzle.commons.persistence.query.OrderSpecifier;
import com.processpuzzle.commons.persistence.query.OrderingDirections;
import com.processpuzzle.persistence.domain.GenericRepository;
import com.processpuzzle.persistence.query.domain.ComparisonOperators;
import com.processpuzzle.persistence.query.domain.DefaultQuery;
import com.processpuzzle.persistence.query.domain.TextAttributeCondition;
public class CompanyRepository extends GenericRepository<Company> {
public CompanyRepository( PersistenceStrategy strategy, ProcessPuzzleContext applicationContext ) {
super( strategy, applicationContext );
}
public void addCompany( UnitOfWork work, Company company ) {
add( work, Company.class, company );
}
public void deleteCompany( UnitOfWork work, Company company ) {
delete( work, Company.class, findCompanyById( work, company.getId() ) );
}
public void deleteCompany( UnitOfWork work, String pid ) {
Company p = findCompanyById( work, pid );
if( p != null ){
deleteCompany( work, p );
}
}
public void deleteCompany( UnitOfWork work, Integer id ) {
Company p = findCompanyById( work, id );
if( p != null ){
deleteCompany( work, p );
}
}
public void updateCompany( UnitOfWork work, Company company ) {
update( work, Company.class, company );
}
public RepositoryResultSet<Company> findAllCompany( UnitOfWork work ) {
return findAll( work, Company.class );
}
public Company findCompanyById( UnitOfWork work, Integer id ) {
return (Company) findById( work, Company.class, id );
}
public Company findCompanyById( UnitOfWork work, String id ) {
return findCompanyById( work, new Integer( id ) );
}
public List<Company> findCompaniesByName( UnitOfWork work, String organizationName ) {
DefaultQuery query = new DefaultQuery( Company.class );
query.getQueryCondition().addAttributeCondition(
new TextAttributeCondition( "partyName.name", organizationName, ComparisonOperators.EQUAL_TO ) );
RepositoryResultSet<Company> results = findByQuery( work, query );
// List<Company> companies = new ArrayList<Company>();
// for ( Party<?> party : results ) {
// if ( party instanceof Company ) {
// companies.add( (Company)party );
// }
// }
return (List<Company>) results.getEntitiesAt( 0, results.size() );
}
public List<Company> findCompaniesByShortName( UnitOfWork work, String shortName ) {
List<Company> companies = new ArrayList<Company>();
DefaultQuery query = new DefaultQuery( Company.class );
query.getQueryCondition().addAttributeCondition( new TextAttributeCondition( "shortName", shortName, ComparisonOperators.EQUAL_TO ) );
RepositoryResultSet<Company> results = findByQuery( work, query );
for( Party<?> party : results ){
if( party instanceof Company ){
Company company = (Company) party; // only contains party attributes, need to fill up
company = findCompanyById( work, party.getId() );
companies.add( company );
}
}
return companies;
}
public RepositoryResultSet<Company> findByPartyTypeName( UnitOfWork work, String name ) {
DefaultQuery query = new DefaultQuery( Company.class );
query.getQueryCondition().addAttributeCondition( new TextAttributeCondition( "type.name", name, ComparisonOperators.EQUAL_TO ) );
return findByQuery( work, query );
}
public RepositoryResultSet<Company> findAllOrderedCompany( UnitOfWork work, String propertyName ) {
// HashMap<String, String> map = new HashMap<String, String>();
// map.put(GenericRepository.ORDER, propertyName);
// return find("from Company", map);
DefaultQuery q = new DefaultQuery( Company.class );
q.getQueryOrder().addOrderSpecifier( new OrderSpecifier( propertyName, OrderingDirections.Ascending ) );
return findByQuery( work, q );
}
}