This file is indexed.

/usr/share/doc/libbiojava-java-demos/examples/RFetch.java is in libbiojava-java-demos 1:1.7.1-4.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import java.io.*;
import java.util.*;

import org.biojava.bio.seq.*;
import org.biojava.bio.symbol.*;
import org.biojava.bio.program.gff.*;
import org.biojava.bio.seq.db.*;
import org.biojava.bio.seq.io.*;
import org.biojava.bio.seq.io.agave.*;
import org.biojava.directory.*;
import org.biojava.bio.program.xff.*;
import org.biojava.utils.xml.*;

public class RFetch {
    private static void printUsage() {
	System.err.println("usage: rfetch [-fasta | -gff | -embl | -genbank | -agave | -xff] namespace id1 id2 ...");
    }

    public static void main(String[] args)
        throws Exception
    {
	String format = "fasta";
	boolean all = false;

	int startArgs = 0;
	while (startArgs < args.length && args[startArgs].startsWith("-")) {
	    String sw = args[startArgs];
	    if ("-fasta".equals(sw)) {
		format = "fasta";
	    } else if ("-gff".equals(sw)) {
		format = "gff";
	    } else if ("-embl".equals(sw)) {
		format = "embl";
	    } else if ("-genbank".equals(sw)) {
		format = "genbank";
	    } else if ("-agave".equals(sw)) {
		format = "agave";
	    } else if ("-xff".equals(sw)) {
            format = "xff";
        }else if ("-list".equals(sw)) {
		format = "list";
	    } else if ("-all".equals(sw)) {
		all = true;
	    } else {
		System.err.println("Unknown switch: " + sw);
		printUsage();
		return;
	    }

	    ++startArgs;
	}
	
	if (args.length - startArgs< 1) {
	    printUsage();
	    return;
	}

	SequenceDBLite seqDB;
	String namespace = args[startArgs++];
	try {
	    seqDB = SystemRegistry.instance().getDatabase(namespace);
	} catch (Exception ex) {
	    ex.printStackTrace();
	    System.err.println("Can't access namespace " + namespace);
	    return;
	}

	if (all) {
	    if (seqDB instanceof SequenceDB) {
		SequenceDB lseqDB = (SequenceDB) seqDB;
		for (SequenceIterator si = lseqDB.sequenceIterator(); si.hasNext(); ) {
		    writeSequence(si.nextSequence(), format);
		}
	    } else {
		System.err.println("Can't list namespace " + namespace);
	    }
	} else if ("list".equals(format)) {
	    if (seqDB instanceof SequenceDB) {
		SequenceDB lseqDB = (SequenceDB) seqDB;
		for (Iterator i = lseqDB.ids().iterator(); i.hasNext(); ) {
		    System.out.println(i.next());
		}
	    } else {
		System.err.println("Can't list namespace " + namespace);
	    }
	} else {
	    while (startArgs < args.length) {
		String name = args[startArgs++];
		Sequence seq = null;
		try {
		    seq = seqDB.getSequence(name);
		} catch (Exception ex) {
		    ex.printStackTrace();
		}
		if (seq != null) {
		    writeSequence(seq, format);
		}
	    }
	}
    }

    private static void writeSequence(Sequence seq, String format)
        throws Exception
    {
	if ("embl".equals(format)) {
	    new EmblLikeFormat().writeSequence(seq, System.out);
	} else if ("genbank".equals(format)) {
	    new GenbankFormat().writeSequence(seq, System.out);
	} else if ("fasta".equals(format)) {
	    new FastaFormat().writeSequence(seq, System.out);
	} else if ("gff".equals(format)) {
	    SequencesAsGFF seqgff = new SequencesAsGFF();
	    seqgff.setRecurse(true);
	    PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));
	    GFFWriter gffw = new GFFWriter(pw);
	    seqgff.processSequence(seq, gffw);
	    pw.flush();
	} else if ("xff".equals(format)) {
        XFFWriter xffw = new XFFWriter();
        PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));
        XMLWriter xw = new PrettyXMLWriter(pw);
        xffw.writeFeatureSet(seq, xw);
        pw.flush();
    } else if ("agave".equals(format)) {
	    new AgaveWriter().writeSequence(seq, System.out);
	}
    }
}