001// -------------------------------------------------------------------------------- 002// Copyright 2002-2026 Echo Three, LLC 003// 004// Licensed under the Apache License, Version 2.0 (the "License"); 005// you may not use this file except in compliance with the License. 006// You may obtain a copy of the License at 007// 008// http://www.apache.org/licenses/LICENSE-2.0 009// 010// Unless required by applicable law or agreed to in writing, software 011// distributed under the License is distributed on an "AS IS" BASIS, 012// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013// See the License for the specific language governing permissions and 014// limitations under the License. 015// -------------------------------------------------------------------------------- 016 017package com.echothree.model.control.content.server.graphql; 018 019import com.echothree.model.control.content.server.control.ContentControl; 020import com.echothree.model.control.core.server.graphql.CoreSecurityUtils; 021import com.echothree.model.control.core.server.graphql.MimeTypeObject; 022import com.echothree.model.control.graphql.server.graphql.BaseEntityInstanceObject; 023import com.echothree.model.control.party.server.graphql.LanguageObject; 024import com.echothree.model.control.party.server.graphql.PartySecurityUtils; 025import com.echothree.model.data.content.server.entity.ContentPageArea; 026import com.echothree.model.data.content.server.entity.ContentPageAreaClob; 027import com.echothree.model.data.content.server.entity.ContentPageAreaDetail; 028import com.echothree.model.data.content.server.entity.ContentPageAreaString; 029import com.echothree.model.data.content.server.entity.ContentPageAreaUrl; 030import com.echothree.util.server.persistence.Session; 031import graphql.annotations.annotationTypes.GraphQLDescription; 032import graphql.annotations.annotationTypes.GraphQLField; 033import graphql.annotations.annotationTypes.GraphQLName; 034import graphql.annotations.annotationTypes.GraphQLNonNull; 035import graphql.schema.DataFetchingEnvironment; 036 037@GraphQLDescription("content page area object") 038@GraphQLName("ContentPageArea") 039public class ContentPageAreaObject 040 extends BaseEntityInstanceObject { 041 042 private final ContentPageArea contentPageArea; // Always Present 043 044 public ContentPageAreaObject(ContentPageArea contentPageArea) { 045 super(contentPageArea.getPrimaryKey()); 046 047 this.contentPageArea = contentPageArea; 048 } 049 050 private ContentPageAreaDetail contentPageAreaDetail; // Optional, use getContentPageAreaDetail() 051 052 private ContentPageAreaDetail getContentPageAreaDetail() { 053 if(contentPageAreaDetail == null) { 054 contentPageAreaDetail = contentPageArea.getLastDetail(); 055 } 056 057 return contentPageAreaDetail; 058 } 059 060 ContentPageAreaClob contentPageAreaClob; 061 062 private ContentPageAreaClob getContentPageAreaClob() { 063 if(contentPageAreaClob == null) { 064 var contentControl = Session.getModelController(ContentControl.class); 065 066 contentPageAreaClob = contentControl.getContentPageAreaClob(getContentPageAreaDetail()); 067 } 068 069 return contentPageAreaClob; 070 } 071 072 ContentPageAreaString contentPageAreaString; 073 074 private ContentPageAreaString getContentPageAreaString() { 075 if(contentPageAreaString == null) { 076 var contentControl = Session.getModelController(ContentControl.class); 077 078 contentPageAreaString = contentControl.getContentPageAreaString(getContentPageAreaDetail()); 079 } 080 081 return contentPageAreaString; 082 } 083 084 ContentPageAreaUrl contentPageAreaUrl; 085 086 private ContentPageAreaUrl getContentPageAreaUrl() { 087 if(contentPageAreaUrl == null) { 088 var contentControl = Session.getModelController(ContentControl.class); 089 090 contentPageAreaUrl = contentControl.getContentPageAreaUrl(getContentPageAreaDetail()); 091 } 092 093 return contentPageAreaUrl; 094 } 095 096 @GraphQLField 097 @GraphQLDescription("content page") 098 @GraphQLNonNull 099 public ContentPageObject getContentPage(final DataFetchingEnvironment env) { 100 return ContentSecurityUtils.getHasContentPageAccess(env) ? new ContentPageObject(getContentPageAreaDetail().getContentPage()) : null; 101 } 102 103 @GraphQLField 104 @GraphQLDescription("content page layout area") 105 @GraphQLNonNull 106 public ContentPageLayoutAreaObject getContentPageLayoutArea(final DataFetchingEnvironment env) { 107 return new ContentPageLayoutAreaObject(getContentPageAreaDetail().getContentPageLayoutArea()); 108 } 109 110 @GraphQLField 111 @GraphQLDescription("language") 112 @GraphQLNonNull 113 public LanguageObject getLanguage(final DataFetchingEnvironment env) { 114 return PartySecurityUtils.getHasLanguageAccess(env) ? new LanguageObject(getContentPageAreaDetail().getLanguage()) : null; 115 } 116 117 @GraphQLField 118 @GraphQLDescription("mime type") 119 @GraphQLNonNull 120 public MimeTypeObject getMimeType(final DataFetchingEnvironment env) { 121 return CoreSecurityUtils.getHasMimeTypeAccess(env) ? new MimeTypeObject(getContentPageAreaDetail().getMimeType()) : null; 122 } 123 124 @GraphQLField 125 @GraphQLDescription("clob") 126 public String getClob(final DataFetchingEnvironment env) { 127 var contentPageAreaClob = getContentPageAreaClob(); 128 129 return contentPageAreaClob == null ? null : contentPageAreaClob.getClob(); 130 } 131 132 @GraphQLField 133 @GraphQLDescription("string") 134 public String getString(final DataFetchingEnvironment env) { 135 var contentPageAreaString = getContentPageAreaString(); 136 137 return contentPageAreaString == null ? null : contentPageAreaString.getString(); 138 } 139 140 @GraphQLField 141 @GraphQLDescription("url") 142 public String getUrl(final DataFetchingEnvironment env) { 143 var contentPageAreaUrl = getContentPageAreaUrl(); 144 145 return contentPageAreaUrl == null ? null : contentPageAreaUrl.getUrl(); 146 } 147 148}