package com.seeyon.apps.doc.util; import com.seeyon.apps.doc.manager.ContentTypeManager; import com.seeyon.apps.doc.manager.DocMetadataManager; import com.seeyon.apps.doc.manager.MetadataDefManager; import com.seeyon.apps.doc.po.DocMetadataDefinitionPO; import com.seeyon.apps.doc.po.DocMetadataOptionPO; import com.seeyon.apps.doc.po.DocResourcePO; import com.seeyon.apps.doc.po.DocTypeDetailPO; import com.seeyon.apps.doc.util.Constants; import com.seeyon.apps.doc.util.DocMVCUtils; import com.seeyon.ctp.common.ctpenumnew.EnumNameEnum; import com.seeyon.ctp.common.ctpenumnew.manager.EnumManager; import com.seeyon.ctp.common.exceptions.BusinessException; import com.seeyon.ctp.common.i18n.ResourceUtil; import com.seeyon.ctp.common.taglibs.functions.Functions; import com.seeyon.ctp.organization.bo.V3xOrgDepartment; import com.seeyon.ctp.organization.bo.V3xOrgMember; import com.seeyon.ctp.organization.manager.OrgManager; import com.seeyon.ctp.util.ContextDatetimes; import com.seeyon.ctp.util.Datetimes; import com.seeyon.ctp.util.Strings; import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Set; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.math.NumberUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class HtmlUtil { private static final Log log = LogFactory.getLog(HtmlUtil.class); private OrgManager orgManager; private ContentTypeManager contentTypeManager; private MetadataDefManager metadataDefManager; private DocMetadataManager docMetadataManager; private EnumManager enumManagerNew; public void setEnumManagerNew(EnumManager enumManager) { this.enumManagerNew = enumManager; } public void setOrgManager(OrgManager orgManager) { this.orgManager = orgManager; } public void setContentTypeManager(ContentTypeManager contentTypeManager) { this.contentTypeManager = contentTypeManager; } public void setMetadataDefManager(MetadataDefManager metadataDefManager) { this.metadataDefManager = metadataDefManager; } public void setDocMetadataManager(DocMetadataManager docMetadataManager) { this.docMetadataManager = docMetadataManager; } public String getNewHtml(long contentTypeId) { StringBuilder sb = new StringBuilder(); sb.append(""); List details = this.contentTypeManager.getContentTypeDetails(contentTypeId); log.info(Boolean.valueOf("details:" + details == null)); if(details != null && details.size() > 0) { for(int i = 0; i < details.size(); ++i) { DocTypeDetailPO detail = (DocTypeDetailPO)details.get(i); if(detail != null) { DocMetadataDefinitionPO metadataDef = detail.getDocMetadataDefinition(); log.info(Boolean.valueOf("metadataDef:" + metadataDef == null)); if(metadataDef == null) { metadataDef = this.metadataDefManager.getMetadataDefById(Long.valueOf(detail.getMetadataDefId())); } String s = this.getNewHtmlStr(metadataDef, detail); sb.append(s); } } } sb.append("
"); return sb.toString(); } public String getEditHtml(long docResId, boolean readonly) { StringBuilder sb = new StringBuilder(); sb.append(""); DocResourcePO docResource = this.docMetadataManager.getDocResourceDetail(Long.valueOf(docResId)); if(docResource != null) { long contentTypeId = docResource.getFrType(); List details = this.contentTypeManager.getContentTypeDetails(contentTypeId); if(details != null && details.size() > 0) { for(int i = 0; i < details.size(); ++i) { DocMetadataDefinitionPO metadataDef = ((DocTypeDetailPO)details.get(i)).getDocMetadataDefinition(); if(metadataDef != null) { Object value = docResource.getMetadataByDefId(metadataDef.getId().longValue()); boolean _readonly = ((DocTypeDetailPO)details.get(i)).getReadOnly(); _readonly = readonly || _readonly; String s = this.getEditHtmlStr(metadataDef, value, _readonly, (DocTypeDetailPO)details.get(i), docResource.getFrType()); if(i % 5 == 0 && i != 0 && i != details.size()) { sb.append(""); sb.append(""); } sb.append(s); } } } } sb.append("
"); sb.append("
"); sb.append("
"); return sb.toString(); } public String getViewHtml(long docResId) { DocResourcePO docResource = this.docMetadataManager.getDocResourceDetail(Long.valueOf(docResId)); return this.getMetaDataHtml(docResource); } public String getHistoryViewHtml(Long docVersionId) { DocResourcePO dr = this.docMetadataManager.getDocVersionInfoDetail(docVersionId); return this.getMetaDataHtml(dr); } private String getMetaDataHtml(DocResourcePO dr) { StringBuilder sb = new StringBuilder(); sb.append(""); if(dr != null) { long contentTypeId = dr.getFrType(); List details = this.contentTypeManager.getContentTypeDetails(contentTypeId); if(details != null && details.size() > 0) { for(int i = 0; i < details.size(); ++i) { DocMetadataDefinitionPO metadataDef = ((DocTypeDetailPO)details.get(i)).getDocMetadataDefinition(); Object value = dr.getMetadataByDefId(metadataDef.getId().longValue()); String s = this.getViewHtmlStr(metadataDef, value); sb.append(s); } } } sb.append("
"); return sb.toString(); } private String getNewHtmlStr(DocMetadataDefinitionPO metadataDef, DocTypeDetailPO detail) { StringBuilder sb = new StringBuilder(); String showName = metadataDef.getName(); String fieldName = metadataDef.getPhysicalName(); byte type = metadataDef.getType(); String defaultValue = metadataDef.getDefaultValue() == null?"":metadataDef.getDefaultValue().trim(); showName = ResourceUtil.getString(showName); if(type != 4 && type != 5) { boolean nullable = detail.getNullable(); sb.append(""); if(nullable) { sb.append("").append(StringEscapeUtils.escapeHtml(showName)).append(":"); } else { sb.append("*").append(StringEscapeUtils.escapeHtml(showName)).append(":"); } sb.append(""); switch(type) { case 1: sb.append(""); break; case 2: if(detail.getId().equals(Long.valueOf(81L))) { sb.append(""); sb.append(metadataDef.getIsPercent()?"%":""); break; case 3: sb.append(""); sb.append(metadataDef.getIsPercent()?"%":""); case 4: case 5: case 10: case 11: case 12: default: break; case 6: sb.append(""); break; case 7: Boolean value = Boolean.valueOf(false); if(Strings.isNotBlank(defaultValue)) { try { value = Boolean.valueOf(defaultValue); } catch (Exception var12) { log.error("", var12); } } boolean readonly = false; sb.append(this.getHtmlForBoolean(metadataDef, value, showName, nullable, readonly)); break; case 8: sb.append(this.getNewHtmlOfOrgType(metadataDef, "Member", detail, showName)); break; case 9: sb.append(this.getNewHtmlOfOrgType(metadataDef, "Department", detail, showName)); break; case 13: Long value1 = Long.valueOf(0L); sb.append(this.getHtmlForEnum(metadataDef, value1, showName, nullable)); } sb.append(""); sb.append(""); } else { sb.append(this.getNewHtmlOfDateAndDatetime(metadataDef, type == 5, showName, detail)); } return sb.toString(); } private String getEditHtmlStr(DocMetadataDefinitionPO metadataDef, Object ovalue, boolean readonly, DocTypeDetailPO detail, long docType) { String value = ovalue == null?"":ovalue.toString(); String defaultValue = metadataDef.getDefaultValue(); String showName = DocMVCUtils.getDisplayName4MetadataDefinition2(detail.getName(), value, new Object[0]); boolean nullable = detail.getNullable(); byte type = metadataDef.getType(); EnumNameEnum mne = Constants.getMetadataNameEnum(detail.getName(), value.toString(), docType); if(mne != null) { value = this.enumManagerNew.getEnumItemLabel(mne, value.toString()); value = value == null?"":value; } value = DocMVCUtils.getDisplayName4MetadataDefinition(value, new Object[0]); StringBuilder sb = new StringBuilder(); sb.append(""); if(nullable) { sb.append("").append(StringEscapeUtils.escapeHtml(showName)).append(":"); } else { sb.append("*").append(StringEscapeUtils.escapeHtml(showName)).append(":"); } sb.append(""); String fieldName; if(readonly) { if(type == 2 && metadataDef.getIsPercent()) { if(Strings.isNotBlank(value)) { int fieldName3 = 0; try { fieldName3 = Integer.parseInt(value); } catch (Exception var36) { log.error("parseInt:", var36); } sb.append(fieldName3); } sb.append("%"); } else if(type == 3 && metadataDef.getIsPercent()) { if(Strings.isNotBlank(value)) { double fieldName2 = 0.0D; try { fieldName2 = Double.parseDouble(value); } catch (Exception var35) { log.error("parseDouble:", var35); } sb.append(fieldName2); } sb.append("%"); } else if(type == 5) { if(value.length() > 16) { sb.append(value.substring(0, 16)); } } else if(type == 8) { fieldName = ""; try { if(Strings.isNotBlank(value)) { V3xOrgMember iterator = this.orgManager.getMemberById(Long.valueOf(NumberUtils.toLong(value))); if(iterator != null) { fieldName = iterator.getName(); } } } catch (Exception var33) { log.error(var33.getMessage(), var33); } finally { sb.append(fieldName); } } else if(type == 9) { fieldName = ""; try { if(Strings.isNotBlank(value)) { V3xOrgDepartment iterator1 = this.orgManager.getDepartmentById(Long.valueOf(NumberUtils.toLong(value))); if(iterator1 != null) { fieldName = iterator1.getName(); } } } catch (Exception var31) { log.error("toLong dept_id:", var31); } finally { sb.append(fieldName); } } else if(type == 13) { Set fieldName1 = metadataDef.getMetadataOption(); if(fieldName1 != null && !fieldName1.isEmpty()) { Iterator iterator2 = fieldName1.iterator(); while(iterator2.hasNext()) { DocMetadataOptionPO option = (DocMetadataOptionPO)iterator2.next(); if(option.getId().toString().equals(value)) { sb.append(option.getOptionItem()); break; } } } } else if(type == 7) { sb.append(this.getHtmlForBoolean(metadataDef, value, showName, nullable, true)); } else { sb.append(Functions.toHTML(value)); } sb.append(""); } else if((type == 4 || type == 5) && defaultValue != null && "1".equals(defaultValue.trim())) { sb.append(this.getEditHtmlOfDateAndDatetime(metadataDef, type == 5, value, showName, detail)); } else { fieldName = metadataDef.getPhysicalName(); switch(type) { case 1: sb.append(""); break; case 2: sb.append(""); sb.append(metadataDef.getIsPercent()?"%":""); break; case 3: sb.append(""); sb.append(metadataDef.getIsPercent()?"%":""); break; case 4: sb.append(this.getEditHtmlOfDateAndDatetime(metadataDef, false, value, showName, detail)); break; case 5: sb.append(this.getEditHtmlOfDateAndDatetime(metadataDef, true, value, showName, detail)); break; case 6: sb.append(""); break; case 7: sb.append(this.getHtmlForBoolean(metadataDef, value, showName, nullable, false)); break; case 8: sb.append(this.getEditHtmlOfOrgType(metadataDef, "Member", value, showName, detail)); break; case 9: sb.append(this.getEditHtmlOfOrgType(metadataDef, "Department", value, showName, detail)); case 10: case 11: case 12: default: break; case 13: sb.append(this.getHtmlForEnum(metadataDef, value, showName, nullable)); } } sb.append(""); sb.append(""); return sb.toString(); } private String getNewHtmlOfDateAndDatetime(DocMetadataDefinitionPO metadataDef, boolean includeTime, String showName, DocTypeDetailPO detail) { StringBuilder sb = new StringBuilder(); String defaultValue = metadataDef.getDefaultValue(); String value = ""; if(defaultValue != null && "1".equals(defaultValue.trim())) { value = includeTime?Datetimes.formatDatetime(new Date()):Datetimes.formatDate(new Date()); } sb.append(""); if(detail.getNullable()) { sb.append("").append(showName).append(":"); } else { sb.append("*").append(showName).append(":"); } sb.append(""); sb.append(""); return sb.toString(); } private String getEditHtmlOfDateAndDatetime(DocMetadataDefinitionPO metadataDef, boolean includeTime, Object value, String showName, DocTypeDetailPO detail) { StringBuilder sb = new StringBuilder(); String temp = null; if(value.toString().length() > 16) { temp = value.toString().substring(0, 16); } sb.append(""); return sb.toString(); } private String getEditHtmlOfOrgType(DocMetadataDefinitionPO metadataDef, String orgType, Object value, String showName, DocTypeDetailPO detail) { StringBuilder sb = new StringBuilder(); String oldValue = ""; String sValue = value == null?"":value.toString(); if(Strings.isNotBlank(sValue)) { if("Member".equals(orgType)) { oldValue = Constants.getOrgEntityName("Member", NumberUtils.toLong(sValue), false); } else if("Department".equals(orgType)) { oldValue = Constants.getOrgEntityName("Department", NumberUtils.toLong(sValue), false); } } sb.append(""); sb.append(""); return sb.toString(); } private String getNewHtmlOfOrgType(DocMetadataDefinitionPO metadataDef, String orgType, DocTypeDetailPO detail, String showName) { StringBuilder sb = new StringBuilder(); String defaultValue = metadataDef.getDefaultValue(); String physicalName = metadataDef.getPhysicalName(); if(defaultValue == null) { defaultValue = ""; } try { if(Strings.isNotBlank(defaultValue)) { if("Member".equals(orgType)) { V3xOrgMember e = this.orgManager.getMemberById(Long.valueOf(NumberUtils.toLong(defaultValue))); if(e != null) { defaultValue = e.getName(); } } else if("Department".equals(orgType)) { V3xOrgDepartment e1 = this.orgManager.getDepartmentById(Long.valueOf(NumberUtils.toLong(defaultValue))); if(e1 != null) { defaultValue = e1.getName(); } } } } catch (BusinessException var9) { log.error("", var9); } sb.append(""); sb.append(""); return sb.toString(); } public String getViewHtmlStr(DocMetadataDefinitionPO metadataDef, Object value) { String showName = DocMVCUtils.getDisplayName4MetadataDefinition2(metadataDef.getName(), value == null?"":value.toString(), new Object[0]); byte type = metadataDef.getType(); StringBuilder sb = new StringBuilder(); sb.append(""); sb.append("").append(StringEscapeUtils.escapeHtml(showName)).append(":"); sb.append(""); String s; if(value != null) { s = ""; switch(type) { case 1: sb.append(StringEscapeUtils.escapeHtml(value.toString())); break; case 2: Integer i = Integer.valueOf(0); try { i = (Integer)value; } catch (Exception var22) { log.error("", var22); } if(metadataDef.getIsPercent()) { sb.append(i).append(" %"); } else { sb.append(i); } break; case 3: Double f = Double.valueOf(0.0D); try { f = (Double)value; } catch (Exception var21) { log.error("", var21); } if(metadataDef.getIsPercent()) { sb.append(f).append(" %"); } else { sb.append(f); } break; case 4: try { s = ContextDatetimes.formateToLocaleDate((Date)value); } catch (Exception var20) { log.error("", var20); } sb.append(s); break; case 5: try { s = ContextDatetimes.formateToLocaleDatetime((Date)value); } catch (Exception var19) { log.error("", var19); } sb.append(s); break; case 6: sb.append(StringEscapeUtils.escapeHtml(value.toString())); break; case 7: Boolean flag = Boolean.valueOf(false); try { flag = (Boolean)value; } catch (Exception var18) { log.error("", var18); } if(flag.booleanValue()) { s = ResourceUtil.getString("common.yes"); } else { s = ResourceUtil.getString("common.no"); } sb.append(s); break; case 8: Long memberId1 = Long.valueOf(0L); try { memberId1 = (Long)value; s = Constants.getOrgEntityName("Member", memberId1.longValue(), false); } catch (Exception var16) { log.error("", var16); } sb.append(s); break; case 9: Long deptId1 = Long.valueOf(0L); try { deptId1 = (Long)value; s = Constants.getOrgEntityName("Department", deptId1.longValue(), false); } catch (Exception var15) { log.error("", var15); } sb.append(s); case 10: case 11: case 12: default: break; case 13: Long enumId = Long.valueOf(0L); try { enumId = Long.valueOf(NumberUtils.toLong(value.toString())); } catch (Exception var17) { log.error("", var17); } Set options = metadataDef.getMetadataOption(); if(options != null && !options.isEmpty()) { Iterator memberId = options.iterator(); while(memberId.hasNext()) { DocMetadataOptionPO deptId = (DocMetadataOptionPO)memberId.next(); if(deptId.getId().longValue() == enumId.longValue()) { s = deptId.getOptionItem(); break; } } } sb.append(s); } } else if(7 == type) { s = ResourceUtil.getString("common.no"); sb.append(s); } else { sb.append(" "); } sb.append(""); sb.append(""); return sb.toString(); } private String getHtmlForEnum(DocMetadataDefinitionPO metadataDef, Object value, String showName, boolean nullable) { StringBuilder sb = new StringBuilder(); long _value = 0L; if(value != null) { try { _value = NumberUtils.toLong(value.toString()); } catch (Exception var12) { log.error("", var12); } } sb.append(""); return sb.toString(); } private String getHtmlForBoolean(DocMetadataDefinitionPO metadataDef, Object value, String showName, boolean nullable, boolean readonly) { StringBuilder sb = new StringBuilder(); boolean b = false; String physicalName = metadataDef.getPhysicalName(); sb.append(""); return sb.toString(); } }