View Javadoc

1   /*
2    * This file is a part of CAST project.
3    * (c) Copyright 2007, AGH University of Science & Technology
4    * https://caribou.iisg.agh.edu.pl/trac/cast
5    *
6    * Licensed under the Eclipse Public License, Version 1.0 (the "License").
7    * You may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    * http://www.eclipse.org/legal/epl-v10.html
10   */
11  /*
12   * File: CustomProperty.java
13   * Created: 2009-03-14
14   * Author: tmilos
15   * $Id: CustomProperty.java 3279 2009-08-31 14:10:02Z tmilos $
16   */
17  
18  package pl.edu.agh.cast.data.model.property;
19  
20  /**
21   * Custom property - contains the value of the property.
22   *
23   * @author AGH CAST Team
24   */
25  public class CustomProperty extends Property<MetaProperty> {
26  
27  	/**
28       * Serial version UID.
29       */
30      private static final long serialVersionUID = -781125505759458553L;
31  
32  	private Object value;
33  
34  	/**
35  	 * Creates new custom property.
36  	 *
37  	 * @param metaProperty
38  	 *            {@link MetaProperty} which describes this property
39  	 */
40  	public CustomProperty(MetaProperty metaProperty) {
41  		super(metaProperty);
42  	}
43  
44  	/**
45  	 * Creates new custom property with initialized value.
46  	 *
47  	 * @param metaProperty
48  	 *            {@link MetaProperty} which describes this property
49  	 * @param value
50  	 *            initial value
51  	 */
52  	public CustomProperty(MetaProperty metaProperty, Object value) {
53  		super(metaProperty);
54  		this.value = value;
55  	}
56  
57  	/**
58  	 * {@inheritDoc}
59  	 *
60  	 * @see pl.edu.agh.cast.data.model.property.Property#getValue()
61  	 */
62  	@Override
63  	public Object getValue() {
64  		return this.value;
65  	}
66  
67  	/**
68  	 * {@inheritDoc}
69  	 *
70  	 * @see pl.edu.agh.cast.data.model.property.Property#setValue(java.lang.Object)
71  	 */
72  	@Override
73  	public void setValue(Object value) {
74  		if (!this.getMetaProperty().isWritable()) {
75  			throw new PropertyException("The property is not writable"); //$NON-NLS-1$
76  		}
77  		if (!this.isValidValue(value)) {
78  			throw new PropertyException(String.format("Invalid value for property of type '%1$s': %2$s", //$NON-NLS-1$
79  			        this.getMetaProperty().getType(), (value != null) ? value.getClass() : null));
80  		}
81  		this.value = value;
82  	}
83  
84  }