package com.psddev.cms.db; import java.util.ArrayList; import java.util.List; import com.psddev.cms.tool.ToolPageContext; import com.psddev.dari.db.Database; import com.psddev.dari.db.ObjectType; import com.psddev.dari.db.Record; import com.psddev.dari.util.StringUtils; public class ContentType extends Record implements Global, Managed { @Indexed @Required private String displayName; @Indexed(unique = true) @Required private String internalName; private List<ContentField> fields; public String getDisplayName() { return displayName; } public void setDisplayName(String displayName) { this.displayName = displayName; } public String getInternalName() { return internalName; } public void setInternalName(String internalName) { this.internalName = internalName; } /** * @return Never {@code null}. */ public List<ContentField> getFields() { if (fields == null) { fields = new ArrayList<ContentField>(); } return fields; } /** * @param fields {@code null} to reset the list. */ public void setFields(List<ContentField> fields) { this.fields = fields; } @Override public String createManagedEditUrl(ToolPageContext page) { String internalName = getInternalName(); if (!StringUtils.isBlank(internalName)) { ObjectType type = Database.Static.getDefault().getEnvironment().getTypes().stream() .filter(t -> internalName.equals(t.getInternalName())) .findFirst() .orElse(null); if (type != null) { return page.cmsUrl( "/adminContentTypes", "typeId", type.getId(), "id", getId()); } } return null; } }