X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Fsurfacing%2FDirectedBinaryDomainCombination.java;h=10e47cdca1b08470126fdab88414cf3eaf1a0cbe;hb=b528989f688291ba7615867e5322090ec42096d8;hp=4fa91792fcf988474562c3c1f99c046466624d45;hpb=48f7a89be9d34f1930a1f863e608235cc27184c5;p=jalview.git diff --git a/forester/java/src/org/forester/surfacing/DirectedBinaryDomainCombination.java b/forester/java/src/org/forester/surfacing/DirectedBinaryDomainCombination.java index 4fa9179..10e47cd 100644 --- a/forester/java/src/org/forester/surfacing/DirectedBinaryDomainCombination.java +++ b/forester/java/src/org/forester/surfacing/DirectedBinaryDomainCombination.java @@ -6,7 +6,7 @@ // Copyright (C) 2008-2009 Christian M. Zmasek // Copyright (C) 2008-2009 Burnham Institute for Medical Research // All rights reserved -// +// // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either @@ -16,32 +16,36 @@ // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. -// +// // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA // // Contact: phylosoft @ gmail . com -// WWW: www.phylosoft.org/forester +// WWW: https://sites.google.com/site/cmzmasek/home/software/forester package org.forester.surfacing; +import java.util.HashMap; +import java.util.Map; + +import org.forester.protein.BasicDomain; +import org.forester.protein.BinaryDomainCombination; + public class DirectedBinaryDomainCombination extends BasicBinaryDomainCombination { - public DirectedBinaryDomainCombination( final DomainId n_terminal, final DomainId c_terminal ) { + final private static Map DDC_POOL = new HashMap(); + + private DirectedBinaryDomainCombination( final String n_terminal, final String c_terminal ) { super(); if ( ( n_terminal == null ) || ( c_terminal == null ) ) { throw new IllegalArgumentException( "attempt to create binary domain combination using null" ); } - _id_0 = n_terminal; - _id_1 = c_terminal; + _id0 = BasicDomain.obtainIdAsShort( n_terminal ); + _id1 = BasicDomain.obtainIdAsShort( c_terminal ); } - public DirectedBinaryDomainCombination( final String n_terminal, final String c_terminal ) { - this( new DomainId( n_terminal ), new DomainId( c_terminal ) ); - } - - public static BinaryDomainCombination createInstance( final String ids ) { + public final static BinaryDomainCombination obtainInstance( final String ids ) { if ( ids.indexOf( BinaryDomainCombination.SEPARATOR ) < 1 ) { throw new IllegalArgumentException( "Unexpected format for binary domain combination [" + ids + "]" ); } @@ -49,6 +53,21 @@ public class DirectedBinaryDomainCombination extends BasicBinaryDomainCombinatio if ( ids_ary.length != 2 ) { throw new IllegalArgumentException( "Unexpected format for binary domain combination [" + ids + "]" ); } - return new DirectedBinaryDomainCombination( ids_ary[ 0 ], ids_ary[ 1 ] ); + return DirectedBinaryDomainCombination.obtainInstance( ids_ary[ 0 ], ids_ary[ 1 ] ); + } + + public final static DirectedBinaryDomainCombination obtainInstance( final String n_terminal, final String c_terminal ) { + final int code = calcCode( BasicDomain.obtainIdAsShort( n_terminal ), BasicDomain.obtainIdAsShort( c_terminal ) ); + if ( DDC_POOL.containsKey( code ) ) { + return DDC_POOL.get( code ); + } + else { + final DirectedBinaryDomainCombination dc = new DirectedBinaryDomainCombination( n_terminal, c_terminal ); + DDC_POOL.put( code, dc ); + if ( VERBOSE && ( ( DDC_POOL.size() % 100 ) == 0 ) ) { + System.out.println( " ddc pool size: " + DDC_POOL.size() ); + } + return dc; + } } }