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.transfer; 018 019import javax.inject.Inject; 020import com.echothree.model.control.content.common.ContentOptions; 021import com.echothree.model.control.content.common.ContentProperties; 022import com.echothree.model.control.content.common.transfer.ContentPageAreaTransfer; 023import com.echothree.model.control.content.server.control.ContentControl; 024import com.echothree.model.control.core.server.control.MimeTypeControl; 025import com.echothree.model.control.party.server.control.PartyControl; 026import com.echothree.model.data.content.server.entity.ContentPageArea; 027import com.echothree.model.data.user.server.entity.UserVisit; 028import com.echothree.util.common.form.TransferProperties; 029import com.echothree.util.common.persistence.type.ByteArray; 030import javax.enterprise.context.RequestScoped; 031 032@RequestScoped 033public class ContentPageAreaTransferCache 034 extends BaseContentTransferCache<ContentPageArea, ContentPageAreaTransfer> { 035 036 @Inject 037 ContentControl contentControl; 038 039 @Inject 040 MimeTypeControl mimeTypeControl; 041 042 @Inject 043 PartyControl partyControl; 044 045 boolean includeBlob; 046 boolean includeClob; 047 boolean includeString; 048 boolean includeUrl; 049 050 TransferProperties transferProperties; 051 boolean filterContentPage; 052 boolean filterContentPageLayoutArea; 053 boolean filterLanguage; 054 boolean filterMimeType; 055 boolean filterEntityInstance; 056 057 /** Creates a new instance of ContentPageAreaTransferCache */ 058 protected ContentPageAreaTransferCache() { 059 super(); 060 061 var options = session.getOptions(); 062 if(options != null) { 063 includeBlob = options.contains(ContentOptions.ContentPageAreaIncludeBlob); 064 includeClob = options.contains(ContentOptions.ContentPageAreaIncludeClob); 065 includeString = options.contains(ContentOptions.ContentPageAreaIncludeString); 066 includeUrl = options.contains(ContentOptions.ContentPageAreaIncludeUrl); 067 } 068 069 transferProperties = session.getTransferProperties(); 070 if(transferProperties != null) { 071 var properties = transferProperties.getProperties(ContentPageAreaTransfer.class); 072 073 if(properties != null) { 074 filterContentPage = !properties.contains(ContentProperties.CONTENT_PAGE); 075 filterContentPageLayoutArea = !properties.contains(ContentProperties.CONTENT_PAGE_LAYOUT_AREA); 076 filterLanguage = !properties.contains(ContentProperties.LANGUAGE); 077 filterMimeType = !properties.contains(ContentProperties.MIME_TYPE); 078 filterEntityInstance = !properties.contains(ContentProperties.ENTITY_INSTANCE); 079 } 080 } 081 082 setIncludeEntityInstance(!filterEntityInstance); 083 } 084 085 public ContentPageAreaTransfer getContentPageAreaTransfer(UserVisit userVisit, ContentPageArea contentPageArea) { 086 var contentPageAreaTransfer = get(contentPageArea); 087 088 if(contentPageAreaTransfer == null) { 089 var contentPageAreaDetail = contentPageArea.getLastDetail(); 090 var contentPageTransfer = filterContentPage ? null : contentControl.getContentPageTransfer(userVisit, contentPageAreaDetail.getContentPage()); 091 var contentPageLayoutAreaTransfer = filterContentPageLayoutArea ? null : contentControl.getContentPageLayoutAreaTransfer(userVisit, contentPageAreaDetail.getContentPageLayoutArea()); 092 var languageTransfer = filterLanguage ? null : partyControl.getLanguageTransfer(userVisit, contentPageAreaDetail.getLanguage()); 093 var mimeType = contentPageAreaDetail.getMimeType(); 094 var mimeTypeTransfer = filterMimeType ? null : mimeType == null ? null : mimeTypeControl.getMimeTypeTransfer(userVisit, mimeType); 095 ByteArray blob = null; 096 String clob = null; 097 String string = null; 098 String url = null; 099 100 if(mimeType != null) { 101 if(includeBlob) { 102 var contentPageAreaBlob = contentControl.getContentPageAreaBlob(contentPageAreaDetail); 103 104 if(contentPageAreaBlob != null) { 105 blob = contentPageAreaBlob.getBlob(); 106 } 107 } 108 109 if(includeClob) { 110 var contentPageAreaClob = contentControl.getContentPageAreaClob(contentPageAreaDetail); 111 112 if(contentPageAreaClob != null) { 113 clob = contentPageAreaClob.getClob(); 114 } 115 } 116 } 117 118 if(includeString) { 119 var contentPageAreaString = contentControl.getContentPageAreaString(contentPageAreaDetail); 120 121 if(contentPageAreaString != null) { 122 string = contentPageAreaString.getString(); 123 } 124 } 125 126 if(includeUrl) { 127 var contentPageAreaUrl = contentControl.getContentPageAreaUrl(contentPageAreaDetail); 128 129 if(contentPageAreaUrl != null) { 130 url = contentPageAreaUrl.getUrl(); 131 } 132 } 133 134 contentPageAreaTransfer = new ContentPageAreaTransfer(contentPageTransfer, contentPageLayoutAreaTransfer, languageTransfer, mimeTypeTransfer, 135 blob, clob, string, url); 136 put(userVisit, contentPageArea, contentPageAreaTransfer); 137 } 138 139 return contentPageAreaTransfer; 140 } 141 142}