001 /**
002 * Copyright 2005-2014 The Kuali Foundation
003 *
004 * Licensed under the Educational Community 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.opensource.org/licenses/ecl2.php
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 package org.kuali.rice.krad.datadictionary.mask;
017
018 import org.kuali.rice.krad.datadictionary.parse.BeanTag;
019 import org.kuali.rice.krad.datadictionary.parse.BeanTagAttribute;
020
021 import java.io.Serializable;
022
023 /**
024 * The displayMask element specifies the type of masking to
025 * be used to hide the value from un-authorized users.
026 * There are three types of masking.
027 */
028 @BeanTag(name = "mask-bean")
029 public class Mask implements Serializable {
030 private static final long serialVersionUID = 4035984416568235531L;
031
032 protected MaskFormatter maskFormatter;
033 protected Class<? extends MaskFormatter> maskFormatterClass;
034
035 /**
036 * Masks a data value with the configured maskFormatter;
037 *
038 * @param value of the object
039 * @return string value of the masked object
040 */
041 public String maskValue(Object value) {
042 if (maskFormatter == null) {
043 if (maskFormatterClass != null) {
044 try {
045 maskFormatter = maskFormatterClass.newInstance();
046 } catch (Exception e) {
047 throw new RuntimeException(
048 "Unable to create instance of mask formatter class: " + maskFormatterClass.getName());
049 }
050 } else {
051 throw new RuntimeException("Mask formatter not set for secure field.");
052 }
053 }
054
055 return maskFormatter.maskValue(value);
056 }
057
058 /**
059 * Gets the maskFormatter attribute.
060 *
061 * @return Returns the maskFormatter.
062 */
063 @BeanTagAttribute(name = "maskFormater", type = BeanTagAttribute.AttributeType.SINGLEBEAN)
064 public MaskFormatter getMaskFormatter() {
065 return maskFormatter;
066 }
067
068 /**
069 * @param maskFormatter instance to be used for masking field values.
070 */
071 public void setMaskFormatter(MaskFormatter maskFormatter) {
072 this.maskFormatter = maskFormatter;
073 }
074
075 /**
076 * Gets the maskFormatterClass attribute.
077 *
078 * @return Returns the maskFormatterClass.
079 */
080 @BeanTagAttribute(name = "maskFormatterClass", type = BeanTagAttribute.AttributeType.SINGLEBEAN)
081 public Class<? extends MaskFormatter> getMaskFormatterClass() {
082 return maskFormatterClass;
083 }
084
085 /**
086 * @param maskFormatterClass element is used when a custom masking
087 * algorithm is desired. This element specifies the name of a
088 * class that will perform the masking for unauthorized users.
089 */
090 public void setMaskFormatterClass(Class<? extends MaskFormatter> maskFormatterClass) {
091 this.maskFormatterClass = maskFormatterClass;
092 }
093
094 }