X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Fsurfacing%2FAdjactantDirectedBinaryDomainCombination.java;h=5ce76fb0c88dee8816347198d4f4e2152e7accca;hb=3d5864a39739960c126f2ab5585162fd52d1f47d;hp=81cdf083c80b32d85a9b36e346b82bf20c0091dc;hpb=663daba455e534e015bd56bae070e9248e3a4533;p=jalview.git diff --git a/forester/java/src/org/forester/surfacing/AdjactantDirectedBinaryDomainCombination.java b/forester/java/src/org/forester/surfacing/AdjactantDirectedBinaryDomainCombination.java index 81cdf08..5ce76fb 100644 --- a/forester/java/src/org/forester/surfacing/AdjactantDirectedBinaryDomainCombination.java +++ b/forester/java/src/org/forester/surfacing/AdjactantDirectedBinaryDomainCombination.java @@ -26,28 +26,26 @@ package org.forester.surfacing; +import java.util.HashMap; +import java.util.Map; + +import org.forester.protein.BasicDomain; import org.forester.protein.BinaryDomainCombination; -import org.forester.protein.DomainId; public class AdjactantDirectedBinaryDomainCombination extends BasicBinaryDomainCombination { - public AdjactantDirectedBinaryDomainCombination( final DomainId n_terminal, final DomainId c_terminal ) { - super(); - if ( ( n_terminal == null ) || ( c_terminal == null ) ) { - throw new IllegalArgumentException( "attempt to create binary domain combination using null" ); - } - _data = n_terminal.getId() + BinaryDomainCombination.SEPARATOR + c_terminal.getId(); - } + final private static Map ADDC_POOL = new HashMap(); - public AdjactantDirectedBinaryDomainCombination( final String n_terminal, final String c_terminal ) { + private AdjactantDirectedBinaryDomainCombination( 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" ); } - _data = n_terminal + BinaryDomainCombination.SEPARATOR + c_terminal; + _id0 = BasicDomain.obtainIdAsShort( n_terminal ); + _id1 = BasicDomain.obtainIdAsShort( c_terminal ); } - public static AdjactantDirectedBinaryDomainCombination createInstance( final String ids ) { + public final static AdjactantDirectedBinaryDomainCombination obtainInstance( final String ids ) { if ( ids.indexOf( BinaryDomainCombination.SEPARATOR ) < 1 ) { throw new IllegalArgumentException( "Unexpected format for binary domain combination [" + ids + "]" ); } @@ -55,6 +53,23 @@ public class AdjactantDirectedBinaryDomainCombination extends BasicBinaryDomainC if ( ids_ary.length != 2 ) { throw new IllegalArgumentException( "Unexpected format for binary domain combination [" + ids + "]" ); } - return new AdjactantDirectedBinaryDomainCombination( ids_ary[ 0 ], ids_ary[ 1 ] ); + return AdjactantDirectedBinaryDomainCombination.obtainInstance( ids_ary[ 0 ], ids_ary[ 1 ] ); + } + + public final static AdjactantDirectedBinaryDomainCombination obtainInstance( final String n_terminal, + final String c_terminal ) { + final int code = calcCode( BasicDomain.obtainIdAsShort( n_terminal ), BasicDomain.obtainIdAsShort( c_terminal ) ); + if ( ADDC_POOL.containsKey( code ) ) { + return ADDC_POOL.get( code ); + } + else { + final AdjactantDirectedBinaryDomainCombination dc = new AdjactantDirectedBinaryDomainCombination( n_terminal, + c_terminal ); + ADDC_POOL.put( code, dc ); + if ( VERBOSE && ( ( ADDC_POOL.size() % 100 ) == 0 ) ) { + System.out.println( " addc pool size: " + ADDC_POOL.size() ); + } + return dc; + } } }