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