001 /* 002 * Copyright 2010 The Kuali Foundation Licensed under the Educational Community License, Version 2.0 (the "License"); you may 003 * not use this file except in compliance with the License. You may obtain a copy of the License at 004 * http://www.osedu.org/licenses/ECL-2.0 Unless required by applicable law or agreed to in writing, software distributed 005 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 006 * implied. See the License for the specific language governing permissions and limitations under the License. 007 */ 008 package org.kuali.student.common.dto; 009 010 import java.io.Serializable; 011 012 import javax.xml.bind.annotation.XmlElement; 013 import javax.xml.bind.annotation.XmlTransient; 014 015 import org.kuali.student.common.infc.HasAttributesAndMeta; 016 import org.kuali.student.common.infc.Meta; 017 018 @SuppressWarnings("serial") 019 @XmlTransient 020 public abstract class HasAttributesAndMetaInfo extends HasAttributesInfo implements HasAttributesAndMeta, Serializable { 021 022 @XmlElement 023 private final MetaInfo metaInfo; 024 025 protected HasAttributesAndMetaInfo() { 026 metaInfo = null; 027 } 028 029 protected HasAttributesAndMetaInfo(HasAttributesAndMeta builder) { 030 super(builder); 031 this.metaInfo = null != builder.getMetaInfo() ? new MetaInfo.Builder(builder.getMetaInfo()).build() : null; 032 } 033 034 @Override 035 public MetaInfo getMetaInfo() { 036 return metaInfo; 037 } 038 039 public static class Builder extends HasAttributesInfo.Builder implements HasAttributesAndMeta { 040 041 private Meta metaInfo; 042 043 public Builder() {} 044 045 public Builder(HasAttributesAndMeta hasAMInfo) { 046 super(hasAMInfo); 047 048 if (null != hasAMInfo.getMetaInfo()) { 049 MetaInfo.Builder builder = new MetaInfo.Builder(); 050 builder.setCreateId(hasAMInfo.getMetaInfo().getCreateId()); 051 builder.setCreateTime(hasAMInfo.getMetaInfo().getCreateTime()); 052 builder.setUpdateId(hasAMInfo.getMetaInfo().getUpdateId()); 053 builder.setUpdateTime(hasAMInfo.getMetaInfo().getUpdateTime()); 054 builder.setVersionInd(hasAMInfo.getMetaInfo().getVersionInd()); 055 this.metaInfo = builder.build(); 056 } 057 } 058 059 @Override 060 public Meta getMetaInfo() { 061 return metaInfo; 062 } 063 064 public void setMetaInfo(Meta metaInfo) { 065 this.metaInfo = metaInfo; 066 } 067 } 068 }