package org.reldb.rel.v0.languages.tutoriald; import java.util.Arrays; import java.util.Iterator; import java.util.List; import org.reldb.rel.v0.generator.Generator; import org.reldb.rel.v0.types.Heading; import org.reldb.rel.v0.types.builtin.TypeCharacter; import org.reldb.rel.v0.values.TupleIterator; import org.reldb.rel.v0.values.Value; import org.reldb.rel.v0.values.ValueCharacter; import org.reldb.rel.v0.values.ValueTuple; public class Keywords { // Rel / Tutorial D keywords. private static final String[] fgKeywords = { "ADD", "AGGREGATE", "AGGREGATED", "ALL", "ALTER", "AND", "ANNOUNCE", "ARRAY", "AS", "ASC", "ATTRIBUTES_OF", "AVG", "AVGD", "BASE", "BACKUP", "BEGIN", "BUT", "BY", "CALL", "CASE", "COMMIT", "COMPOSE", "CONSTRAINT", "COUNT", "COUNTD", "DELETE", "DESC", "DIVIDEBY", "DISTINCT", "DO", "DROP", "D_INSERT", "D_UNION", "ELSE", "END", "<EOT>", "EQUIV", "EXACTLYD", "EXACTLY", "EXECUTE", "EXTEND", "EXTERNAL", "FALSE", "FOREIGN", "FOR", "FROM", "GROUP", "I_DELETE", "I_MINUS", "IF", "IMAGE_IN", "IN", "INIT", "INSERT", "INTERSECT", "IS", "JOIN", "KEY", "LEAVE", "LOAD", "~[", "]~", "MATCHING", "MAX", "MIN", "MINUS", "NOEMPTY", "NOT", "OPERATOR", "ORDER", "ORDERED", "ORDINAL", "OR", "OUTPUT", "PER", "POSSREP", "PREFIX", "PRIVATE", "PUBLIC", "RANK", "REAL", "RELATION", "REL", "RENAME", "RETURN", "RETURNS", "ROLLBACK", "SAME_HEADING_AS", "SAME_TYPE_AS", "SET", "SEMIJOIN" , "SEMIMINUS", "SUFFIX", "SUMD", "SUMMARIZE", "SUM", "SYNONYMS", "DEE", "TABLE_DEE", "DUM", "TABLE_DUM", "TCLOSE", "THEN", "TIMES", "TO", "TRANSACTION", "TRUE", "TUPLE", "TUP", "TYPE", "TYPE_OF", "UNGROUP", "UNION", "UNORDER", "UNWRAP", "UPDATES", "UPDATE", "VAR", "VERSION", "VIRTUAL", "VIEW", "WHEN", "WHERE", "WHILE", "WITH", "WRAP", "WRITE", "WRITELN", "XOR", "XUNION" }; private static List<String>keywords = null; private static Iterator<String> getKeywordIterator() { if (keywords == null) keywords = Arrays.asList(fgKeywords); return keywords.iterator(); } /** Obtain heading for keywords relvar. * REL {Identifier CHAR, Documentation CHAR, isFileConnectionString BOOLEAN, FileExtensions REL {Extension CHAR}} */ public static Heading getHeading() { Heading heading = new Heading(); heading.add("Keyword", TypeCharacter.getInstance()); return heading; } /** Obtain keywords list as a TupleIterator for the above. */ public static TupleIterator getKeywords(Generator generator) { return new TupleIterator() { Iterator<String> iterator = getKeywordIterator(); @Override public boolean hasNext() { return iterator.hasNext(); } @Override public ValueTuple next() { Value rawTuple[]; String keyword = iterator.next(); rawTuple = new Value[] { ValueCharacter.select(generator, keyword) }; return new ValueTuple(generator, rawTuple); } @Override public void close() {} }; } public static long getCardinality() { return fgKeywords.length; } }