001package org.apache.commons.ssl.org.bouncycastle.asn1.eac;
002
003import java.util.Enumeration;
004import java.util.Hashtable;
005
006
007public class Flags
008{
009
010    int value = 0;
011
012    public Flags()
013    {
014
015    }
016
017    public Flags(int v)
018    {
019        value = v;
020    }
021
022    public void set(int flag)
023    {
024        value |= flag;
025    }
026
027    public boolean isSet(int flag)
028    {
029        return (value & flag) != 0;
030    }
031
032    public int getFlags()
033    {
034        return value;
035    }
036
037    /* Java 1.5
038     String decode(Map<Integer, String> decodeMap)
039     {
040         StringJoiner joiner = new StringJoiner(" ");
041         for (int i : decodeMap.keySet())
042         {
043             if (isSet(i))
044                 joiner.add(decodeMap.get(i));
045         }
046         return joiner.toString();
047     }
048     */
049
050    String decode(Hashtable decodeMap)
051    {
052        StringJoiner joiner = new StringJoiner(" ");
053        Enumeration e = decodeMap.keys();
054        while (e.hasMoreElements())
055        {
056            Integer i = (Integer)e.nextElement();
057            if (isSet(i.intValue()))
058            {
059                joiner.add((String)decodeMap.get(i));
060            }
061        }
062        return joiner.toString();
063    }
064
065    private class StringJoiner
066    {
067
068        String mSeparator;
069        boolean First = true;
070        StringBuffer b = new StringBuffer();
071
072        public StringJoiner(String separator)
073        {
074            mSeparator = separator;
075        }
076
077        public void add(String str)
078        {
079            if (First)
080            {
081                First = false;
082            }
083            else
084            {
085                b.append(mSeparator);
086            }
087
088            b.append(str);
089        }
090
091        public String toString()
092        {
093            return b.toString();
094        }
095    }
096}