in progress (special coloring is still true)
[jalview.git] / forester / java / src / org / forester / phylogeny / data / Uri.java
1 // $Id:
2 // FORESTER -- software libraries and applications
3 // for evolutionary biology research and applications.
4 //
5 // Copyright (C) 2008-2009 Christian M. Zmasek
6 // Copyright (C) 2008-2009 Burnham Institute for Medical Research
7 // All rights reserved
8 //
9 // This library is free software; you can redistribute it and/or
10 // modify it under the terms of the GNU Lesser General Public
11 // License as published by the Free Software Foundation; either
12 // version 2.1 of the License, or (at your option) any later version.
13 //
14 // This library is distributed in the hope that it will be useful,
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 // Lesser General Public License for more details.
18 //
19 // You should have received a copy of the GNU Lesser General Public
20 // License along with this library; if not, write to the Free Software
21 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22 //
23 // Contact: phylosoft @ gmail . com
24 // WWW: https://sites.google.com/site/cmzmasek/home/software/forester
25
26 package org.forester.phylogeny.data;
27
28 import java.io.IOException;
29 import java.io.Writer;
30 import java.net.URI;
31
32 import org.forester.io.parsers.phyloxml.PhyloXmlMapping;
33
34 public class Uri implements PhylogenyData {
35
36     final private URI    _uri;
37     final private String _description;
38     final private String _type;
39
40     public Uri( final String uri_str, final String description, final String type ) {
41         if ( uri_str == null ) {
42             throw new IllegalArgumentException( "attempt to create Uri from null" );
43         }
44         _uri = URI.create( uri_str );
45         _description = description;
46         _type = type;
47     }
48
49     public Uri( final URI uri ) {
50         if ( uri == null ) {
51             throw new IllegalArgumentException( "attempt to create Uri from null URI" );
52         }
53         _uri = uri;
54         _description = "";
55         _type = "";
56     }
57
58     public Uri( final URI uri, final String description, final String type ) {
59         if ( uri == null ) {
60             throw new IllegalArgumentException( "attempt to create Uri from null URI" );
61         }
62         _uri = uri;
63         _description = description;
64         _type = type;
65     }
66
67     @Override
68     public StringBuffer asSimpleText() {
69         return new StringBuffer( getValue().toString() );
70     }
71
72     @Override
73     public StringBuffer asText() {
74         final StringBuffer sb = new StringBuffer();
75         sb.append( "[" );
76         sb.append( getDescription() );
77         sb.append( " " );
78         sb.append( getType() );
79         sb.append( "] " );
80         sb.append( getValue().toString() );
81         return sb;
82     }
83
84     @Override
85     public PhylogenyData copy() {
86         return new Uri( getValue().toString(), new String( getDescription() ), new String( getType() ) );
87     }
88
89     public String getDescription() {
90         return _description;
91     }
92
93     public String getType() {
94         return _type;
95     }
96
97     public URI getValue() {
98         return _uri;
99     }
100
101     @Override
102     public boolean isEqual( final PhylogenyData data ) {
103         throw new UnsupportedOperationException();
104     }
105
106     @Override
107     public StringBuffer toNHX() {
108         throw new UnsupportedOperationException();
109     }
110
111     @Override
112     public void toPhyloXML( final Writer writer, final int level, final String indentation ) throws IOException {
113         PhylogenyDataUtil.appendElement( writer,
114                                          PhyloXmlMapping.URI,
115                                          getValue().toString(),
116                                          PhyloXmlMapping.TYPE_ATTR,
117                                          getType(),
118                                          PhyloXmlMapping.URI_DESC_ATTR,
119                                          getDescription(),
120                                          indentation );
121     }
122
123     @Override
124     public String toString() {
125         return asSimpleText().toString();
126     }
127 }