package cms.model.validator;
import cms.model.dao.PageDAO;
import cms.model.meta.PageEntityMeta;
import cms.model.model.PageEntity;
import com.google.appengine.api.datastore.Key;
import com.google.inject.Inject;
public class PageValidator extends AbstractValidator {
protected PageEntityMeta meta = PageEntityMeta.get();
@Inject
protected PageDAO pageDAO;
protected boolean validateFields() {
validators.add(meta.url, validators.required(), validators.maxlength(255));
String url = (String) input.get(meta.url.toString());
if (url.startsWith("/") || url.endsWith("/")) {
validators.getErrors().put(meta.url.toString(), "Url nesmí začínat nebo končit '/'.");
}
if (url.startsWith("admin/") || url.startsWith("_ah/")) {
validators.getErrors().put(meta.url.toString(), "Tato url je rezervovaná.");
}
if(isAdd()) {
if (pageDAO.getByUrl(url) != null) {
validators.getErrors().put(meta.url.toString(), "Tato url již existuje.");
}
}
if(isEdit()) {
Key pageKey = (Key) input.get(meta.key.toString());
PageEntity oldPageEntity = pageDAO.get(pageKey);
String oldUrl = oldPageEntity.getUrl();
if(!oldUrl.equals(url)) {
if (pageDAO.getByUrl(url) != null) {
validators.getErrors().put(meta.url.toString(), "Tato url již existuje.");
}
}
}
validators.add(meta.title, validators.maxlength(255));
return validators.getErrors().isEmpty();
}
}