package org.jtheque.films.services.impl;
/*
* Copyright JTheque (Baptiste Wicht)
*
* Licensed 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.
*/
import org.jtheque.core.managers.persistence.able.DataListener;
import org.jtheque.films.services.able.INotesService;
import org.jtheque.films.services.able.IRealizersService;
import org.jtheque.primary.dao.able.IDaoPersons;
import org.jtheque.primary.od.able.Person;
import org.jtheque.primary.services.able.ISimpleDataService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collection;
/**
* The implementation of the realizers service.
*
* @author Baptiste Wicht
*/
@Service
public final class RealizersService implements IRealizersService {
@Resource
private IDaoPersons daoPersons;
@Resource
private INotesService notesService;
@Resource
private ISimpleDataService countriesService;
private Person defaultRealizer;
private static final String DEFAULT_REALIZER = "Unknown";
@Override
public Collection<Person> getRealizers() {
return daoPersons.getPersons(PERSON_TYPE);
}
@Override
@Transactional
public boolean delete(Person realizer) {
return daoPersons.delete(realizer);
}
@Override
public boolean exists(String firstName, String name) {
return daoPersons.exists(firstName, name, PERSON_TYPE);
}
@Override
public Person getRealizer(String firstName, String name) {
return daoPersons.getPerson(firstName, name, PERSON_TYPE);
}
@Override
@Transactional
public void create(Person realizer) {
daoPersons.create(realizer);
}
@Override
public boolean exists(Person realizer) {
return daoPersons.exist(realizer);
}
@Override
public boolean hasNoRealizers() {
return getRealizers().isEmpty();
}
@Override
@Transactional
public void save(Person realizer) {
daoPersons.save(realizer);
}
@Override
public Collection<Person> getDatas() {
return daoPersons.getPersons(PERSON_TYPE);
}
@Override
public void addDataListener(DataListener listener) {
daoPersons.addDataListener(listener);
}
@Override
public Person getEmptyRealizer() {
return daoPersons.createPerson();
}
@Override
@Transactional
public Person getDefaultRealizer() {
if (defaultRealizer == null) {
defaultRealizer = daoPersons.getPerson(DEFAULT_REALIZER, DEFAULT_REALIZER, PERSON_TYPE);
if (defaultRealizer == null) {
defaultRealizer = getEmptyRealizer();
defaultRealizer.setName(DEFAULT_REALIZER);
defaultRealizer.setFirstName(DEFAULT_REALIZER);
defaultRealizer.setNote(notesService.getDefaultNote());
defaultRealizer.setTheCountry(countriesService.getDefaultSimpleData());
daoPersons.create(defaultRealizer);
}
}
return defaultRealizer;
}
@Override
@Transactional
public void clearAll() {
daoPersons.clearAll();
}
@Override
public String getDataType() {
return DATA_TYPE;
}
}