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