package fi.otavanopisto.muikku.plugins.material;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.enterprise.context.Dependent;
import javax.enterprise.event.Event;
import javax.inject.Inject;
import fi.otavanopisto.muikku.plugins.material.dao.QueryFieldDAO;
import fi.otavanopisto.muikku.plugins.material.events.QueryFieldDeleteEvent;
import fi.otavanopisto.muikku.plugins.material.model.Material;
import fi.otavanopisto.muikku.plugins.material.model.QueryConnectField;
import fi.otavanopisto.muikku.plugins.material.model.QueryField;
import fi.otavanopisto.muikku.plugins.material.model.QueryFileField;
import fi.otavanopisto.muikku.plugins.material.model.QueryMemoField;
import fi.otavanopisto.muikku.plugins.material.model.QueryMultiSelectField;
import fi.otavanopisto.muikku.plugins.material.model.QuerySelectField;
import fi.otavanopisto.muikku.plugins.material.model.QueryTextField;
@Dependent
public class QueryFieldController {
@Inject
private Logger logger;
@Inject
private QueryFieldDAO queryFieldDAO;
@Inject
private QueryConnectFieldController queryConnectFieldController;
@Inject
private QueryFileFieldController queryFileFieldController;
@Inject
private QueryMemoFieldController queryMemoFieldController;
@Inject
private QueryMultiSelectFieldController queryMultiSelectFieldController;
@Inject
private QuerySelectFieldController querySelectFieldController;
@Inject
private QueryTextFieldController queryTextFieldController;
@Inject
private Event<QueryFieldDeleteEvent> queryFieldDeleteEvent;
/* QueryField */
public QueryField findQueryFieldByMaterialAndName(Material material, String name) {
return queryFieldDAO.findByMaterialAndName(material, name);
}
public List<QueryField> listQueryFieldsByMaterial(Material material) {
return queryFieldDAO.listByMaterial(material);
}
public void deleteQueryField(QueryField queryField, boolean removeAnswers) {
if (queryField instanceof QueryConnectField) {
queryConnectFieldController.deleteQueryConnectField((QueryConnectField) queryField, removeAnswers);
} else if (queryField instanceof QueryFileField) {
queryFileFieldController.deleteQueryFileField((QueryFileField) queryField, removeAnswers);
} else if (queryField instanceof QueryMemoField) {
queryMemoFieldController.deleteQueryMemoField((QueryMemoField) queryField, removeAnswers);
} else if (queryField instanceof QueryTextField) {
queryTextFieldController.deleteQueryTextField((QueryTextField) queryField, removeAnswers);
} else if (queryField instanceof QueryMultiSelectField) {
queryMultiSelectFieldController.deleteQueryMultiSelectField((QueryMultiSelectField) queryField, removeAnswers);
} else if (queryField instanceof QuerySelectField) {
querySelectFieldController.deleteQuerySelectField((QuerySelectField) queryField, removeAnswers);
} else {
logger.log(Level.WARNING, "Did not recognize query field when deleting, falling back to default delete operation");
queryFieldDeleteEvent.fire(new QueryFieldDeleteEvent(queryField, removeAnswers));
queryFieldDAO.delete(queryField);
}
}
}