Example usage for com.google.gson.stream JsonReader peek

List of usage examples for com.google.gson.stream JsonReader peek

Introduction

In this page you can find the example usage for com.google.gson.stream JsonReader peek.

Prototype

public JsonToken peek() throws IOException 

Source Link

Document

Returns the type of the next token without consuming it.

Usage

From source file:de.pribluda.android.jsonmarshaller.JSONUnmarshaller.java

License:Apache License

/**
 * unmarshal current value, possibly walking down the three
 *
 * @param reader json reader to pull value from
 * @param clazz  expected class/*  ww w. j a v a  2s. co  m*/
 * @return
 * @throws IOException
 * @throws IllegalAccessException
 * @throws InvocationTargetException
 * @throws InstantiationException
 * @throws NoSuchMethodException
 */
private static Object unmarshalValue(JsonReader reader, Class clazz) throws IOException, IllegalAccessException,
        InvocationTargetException, InstantiationException, NoSuchMethodException {

    Object value = null;

    switch (reader.peek()) {
    case STRING:
    case NUMBER:
        // process string
        value = reader.nextString();
        break;
    case BOOLEAN:
        value = reader.nextBoolean();
        break;
    case BEGIN_ARRAY:
        //  we are interested in arrays
        if (clazz.isArray()) {
            // populate field value from JSON Array
            value = populateRecusrsive(clazz, reader);
        } else {
            reader.skipValue();
        }
        break;
    case BEGIN_OBJECT:
        // so, we are unmarshalling nested object - recurse
        value = unmarshall(reader, clazz);
        break;
    default:
        // do not know what to do with it,  skip
        reader.skipValue();
    }

    return value;
}

From source file:edu.isi.karma.modeling.alignment.GraphUtil.java

License:Apache License

public static DirectedWeightedMultigraph<Node, DefaultLink> readGraph(JsonReader reader) throws IOException {

    DirectedWeightedMultigraph<Node, DefaultLink> graph = new DirectedWeightedMultigraph<Node, DefaultLink>(
            LabeledLink.class);

    Node n, source, target;//from ww w  .  j  a v  a 2 s  .  c om
    DefaultLink l;
    Double[] weight = new Double[1];
    HashMap<String, Node> idToNodes = new HashMap<>();

    reader.beginObject();
    while (reader.hasNext()) {
        String key = reader.nextName();
        if (key.equals("nodes") && reader.peek() != JsonToken.NULL) {
            reader.beginArray();
            while (reader.hasNext()) {
                n = readNode(reader);
                if (n != null) {
                    idToNodes.put(n.getId(), n);
                    graph.addVertex(n);
                }
            }
            reader.endArray();
        } else if (key.equals("links") && reader.peek() != JsonToken.NULL) {
            reader.beginArray();
            while (reader.hasNext()) {
                l = readLink(reader, weight);
                if (l != null) {
                    source = idToNodes.get(LinkIdFactory.getLinkSourceId(l.getId()));
                    target = idToNodes.get(LinkIdFactory.getLinkTargetId(l.getId()));
                    if (source != null && target != null) {
                        graph.addEdge(source, target, l);
                        if (weight[0] != null)
                            graph.setEdgeWeight(l, weight[0].doubleValue());
                    }
                }
            }
            reader.endArray();
        } else {
            reader.skipValue();
        }
    }
    reader.endObject();

    return graph;
}

From source file:edu.isi.karma.modeling.alignment.GraphUtil.java

License:Apache License

private static Node readNode(JsonReader reader) throws IOException {

    String id = null;//from   w  ww . j  a  va 2  s .  c om
    Label label = null;
    NodeType type = null;
    String hNodeId = null;
    String columnName = null;
    Label rdfLiteralType = null;
    String language = null;
    Label datatype = null;
    String value = null;
    boolean isUri = false;
    SemanticType userSelectedSemanticType = null;
    List<SemanticType> learnedSemanticTypes = null;
    List<SemanticType> userSemanticTypes = null;
    Set<String> modelIds = null;

    reader.beginObject();
    while (reader.hasNext()) {
        String key = reader.nextName();
        if (key.equals("id") && reader.peek() != JsonToken.NULL) {
            id = reader.nextString();
        } else if (key.equals("label") && reader.peek() != JsonToken.NULL) {
            label = readLabel(reader);
        } else if (key.equals("type") && reader.peek() != JsonToken.NULL) {
            type = NodeType.valueOf(reader.nextString());
        } else if (key.equals("hNodeId") && reader.peek() != JsonToken.NULL) {
            hNodeId = reader.nextString();
        } else if (key.equals("columnName") && reader.peek() != JsonToken.NULL) {
            columnName = reader.nextString();
        } else if (key.equals("datatype") && reader.peek() != JsonToken.NULL) {
            datatype = readLabel(reader);
        } else if (key.equals("value") && reader.peek() != JsonToken.NULL) {
            value = reader.nextString();
        } else if (key.equals("isUri") && reader.peek() != JsonToken.NULL) {
            isUri = Boolean.parseBoolean(reader.nextString());
        } else if (key.equals("rdfLiteralType") && reader.peek() != JsonToken.NULL) {
            rdfLiteralType = readLabel(reader);
        } else if (key.equals("language") && reader.peek() != JsonToken.NULL) {
            language = reader.nextString();
        } else if (key.equals("userSelectedSemanticType") && reader.peek() != JsonToken.NULL) {
            userSelectedSemanticType = readSemanticType(reader);
        } else if (key.equals("suggestedSemanticTypes") && reader.peek() != JsonToken.NULL) {
            learnedSemanticTypes = new ArrayList<>();
            reader.beginArray();
            while (reader.hasNext()) {
                SemanticType semanticType = readSemanticType(reader);
                learnedSemanticTypes.add(semanticType);
            }
            reader.endArray();
        } else if (key.equals("userSemanticTypes") && reader.peek() != JsonToken.NULL) {
            userSemanticTypes = new ArrayList<>();
            reader.beginArray();
            while (reader.hasNext()) {
                SemanticType semanticType = readSemanticType(reader);
                userSemanticTypes.add(semanticType);
            }
            reader.endArray();
        } else if (key.equals("learnedSemanticTypes") && reader.peek() != JsonToken.NULL) {
            learnedSemanticTypes = new ArrayList<>();
            reader.beginArray();
            while (reader.hasNext()) {
                SemanticType semanticType = readSemanticType(reader);
                learnedSemanticTypes.add(semanticType);
            }
            reader.endArray();
        } else if (key.equals("modelIds") && reader.peek() != JsonToken.NULL) {
            modelIds = readModelIds(reader);
        } else {
            reader.skipValue();
        }
    }
    reader.endObject();

    Node n = null;
    if (type == NodeType.InternalNode) {
        n = new InternalNode(id, label);
    } else if (type == NodeType.ColumnNode) {
        n = new ColumnNode(id, hNodeId, columnName, rdfLiteralType, language);
        if (userSemanticTypes == null && userSelectedSemanticType != null) {
            userSemanticTypes = new ArrayList<>();
            userSemanticTypes.add(userSelectedSemanticType);
        }
        if (userSemanticTypes != null) {
            for (SemanticType st : userSemanticTypes)
                ((ColumnNode) n).assignUserType(st);
        }
        ((ColumnNode) n).setLearnedSemanticTypes(learnedSemanticTypes);
    } else if (type == NodeType.LiteralNode) {
        n = new LiteralNode(id, value, datatype, language, isUri);
    } else {
        logger.error("cannot instanciate a node from the type: " + type.toString());
        return null;
    }

    n.setModelIds(modelIds);

    return n;
}

From source file:edu.isi.karma.modeling.alignment.GraphUtil.java

License:Apache License

private static DefaultLink readLink(JsonReader reader, Double[] weight) throws IOException {

    String id = null;//from   w w  w .j a v a 2 s  .c om
    Label label = null;
    LinkType type = null;
    String hNodeId = null;
    ObjectPropertyType objectPropertyType = null;
    String specializedLinkId = null;
    LinkStatus status = null;
    LinkKeyInfo keyInfo = null;
    Set<String> modelIds = null;
    if (weight == null)
        weight = new Double[1];

    reader.beginObject();
    while (reader.hasNext()) {
        String key = reader.nextName();
        if (key.equals("id") && reader.peek() != JsonToken.NULL) {
            id = reader.nextString();
        } else if (key.equals("label") && reader.peek() != JsonToken.NULL) {
            label = readLabel(reader);
        } else if (key.equals("type") && reader.peek() != JsonToken.NULL) {
            type = LinkType.valueOf(reader.nextString());
        } else if (key.equals("hNodeId") && reader.peek() != JsonToken.NULL) {
            hNodeId = reader.nextString();
        } else if (key.equals("objectPropertyType") && reader.peek() != JsonToken.NULL) {
            objectPropertyType = ObjectPropertyType.valueOf(reader.nextString());
        } else if (key.equals("specializedLinkId") && reader.peek() != JsonToken.NULL) {
            specializedLinkId = reader.nextString();
        } else if (key.equals("status") && reader.peek() != JsonToken.NULL) {
            status = LinkStatus.valueOf(reader.nextString());
        } else if (key.equals("keyInfo") && reader.peek() != JsonToken.NULL) {
            keyInfo = LinkKeyInfo.valueOf(reader.nextString());
        } else if (key.equals("modelIds") && reader.peek() != JsonToken.NULL) {
            modelIds = readModelIds(reader);
        } else if (key.equals("weight") && reader.peek() != JsonToken.NULL) {
            weight[0] = new Double(reader.nextDouble());
        } else {
            reader.skipValue();
        }
    }
    reader.endObject();

    DefaultLink l = null;
    if (type == LinkType.ClassInstanceLink) {
        l = new ClassInstanceLink(id, keyInfo);
    } else if (type == LinkType.ColumnSubClassLink) {
        l = new ColumnSubClassLink(id);
    } else if (type == LinkType.DataPropertyLink) {
        l = new DataPropertyLink(id, label);
    } else if (type == LinkType.DataPropertyOfColumnLink) {
        l = new DataPropertyOfColumnLink(id, hNodeId, specializedLinkId);
    } else if (type == LinkType.ObjectPropertyLink) {
        l = new ObjectPropertyLink(id, label, objectPropertyType);
    } else if (type == LinkType.ObjectPropertySpecializationLink) {
        l = new ObjectPropertySpecializationLink(hNodeId, specializedLinkId);
    } else if (type == LinkType.SubClassLink) {
        l = new SubClassLink(id);
    } else if (type == LinkType.CompactObjectPropertyLink) {
        l = new CompactObjectPropertyLink(id, objectPropertyType);
    } else if (type == LinkType.CompactSubClassLink) {
        l = new CompactSubClassLink(id);
    } else {
        logger.error("cannot instanciate a link from the type: " + type.toString());
        return null;
    }

    if (l instanceof LabeledLink) {
        ((LabeledLink) l).setStatus(status);
        ((LabeledLink) l).setModelIds(modelIds);
    }
    return l;
}

From source file:edu.isi.karma.modeling.alignment.GraphUtil.java

License:Apache License

private static Label readLabel(JsonReader reader) throws IOException {

    String uri = null;/*from w  ww.j a  v  a2  s  . c o  m*/
    //      String ns = null;
    //      String prefix = null;
    //      String rdfsComment = null;
    String rdfsLabel = null;

    reader.beginObject();
    while (reader.hasNext()) {
        String key = reader.nextName();
        if (key.equals("uri") && reader.peek() != JsonToken.NULL) {
            uri = reader.nextString();
            //} else if (key.equals("ns") && reader.peek() != JsonToken.NULL) {
            //   ns = reader.nextString();
            //} else if (key.equals("prefix") && reader.peek() != JsonToken.NULL) {
            //   prefix = reader.nextString();
            //} else if (key.equals("rdfsLabel") && reader.peek() != JsonToken.NULL) {
            //   rdfsLabel = reader.nextString();
            //} else if (key.equals("rdfsComment") && reader.peek() != JsonToken.NULL) {
            //   rdfsComment = reader.nextString();
        } else {
            reader.skipValue();
        }
    }
    reader.endObject();

    //       Label label = new Label(uri, ns, prefix, rdfsLabel, rdfsComment);
    Label label = new Label(uri);
    return label;
}

From source file:edu.isi.karma.modeling.alignment.GraphUtil.java

License:Apache License

private static SemanticType readSemanticType(JsonReader reader) throws IOException {

    String hNodeId = null;/* w w w  .  jav a 2 s. c o  m*/
    Label domain = null;
    Label type = null;
    Origin origin = null;
    Double confidenceScore = null;

    reader.beginObject();
    while (reader.hasNext()) {
        String key = reader.nextName();
        if (key.equals("hNodeId") && reader.peek() != JsonToken.NULL) {
            hNodeId = reader.nextString();
        } else if (key.equals("domain") && reader.peek() != JsonToken.NULL) {
            domain = readLabel(reader);
        } else if (key.equals("type") && reader.peek() != JsonToken.NULL) {
            type = readLabel(reader);
        } else if (key.equals("origin") && reader.peek() != JsonToken.NULL) {
            origin = Origin.valueOf(reader.nextString());
        } else if (key.equals("confidenceScore") && reader.peek() != JsonToken.NULL) {
            confidenceScore = reader.nextDouble();
        } else {
            reader.skipValue();
        }
    }
    reader.endObject();

    SemanticType semanticType = new SemanticType(hNodeId, type, domain, origin, confidenceScore);
    return semanticType;
}

From source file:edu.isi.karma.modeling.alignment.SemanticModel.java

License:Apache License

private static SemanticModel readModel(JsonReader reader) throws IOException {

    String id = null;//  www  .j a  v a  2  s  .  c  om
    String name = null;
    String description = null;
    DirectedWeightedMultigraph<Node, DefaultLink> graph = null;
    List<ColumnNode> sourceColumns = null;
    HashMap<String, ColumnNode> sourceColumnIds = null;

    Map<String, String> mappingToSourceColumnsIds = null;

    reader.beginObject();
    while (reader.hasNext()) {
        String key = reader.nextName();
        if (key.equals("id") && reader.peek() != JsonToken.NULL) {
            id = reader.nextString();
        } else if (key.equals("name") && reader.peek() != JsonToken.NULL) {
            name = reader.nextString();
        } else if (key.equals("description") && reader.peek() != JsonToken.NULL) {
            description = reader.nextString();
        } else if (key.equals("sourceColumns") && reader.peek() != JsonToken.NULL) {
            sourceColumns = new LinkedList<>();
            sourceColumnIds = new HashMap<>();
            reader.beginArray();
            while (reader.hasNext()) {
                ColumnNode cn = readSourceColumn(reader);
                if (cn != null) {
                    sourceColumns.add(cn);
                    sourceColumnIds.put(cn.getId(), cn);
                }
            }
            reader.endArray();
        } else if (key.equals("mappingToSourceColumns") && reader.peek() != JsonToken.NULL) {
            mappingToSourceColumnsIds = new HashMap<>();
            Map<String, String> oneEntryMapping;
            reader.beginArray();
            while (reader.hasNext()) {
                oneEntryMapping = readMappingToSourceColumn(reader);
                if (oneEntryMapping != null && oneEntryMapping.size() == 1)
                    mappingToSourceColumnsIds.putAll(oneEntryMapping);
            }
            reader.endArray();
        } else if (key.equals("graph") && reader.peek() != JsonToken.NULL) {
            graph = GraphUtil.readGraph(reader);
        } else {
            reader.skipValue();
        }
    }
    reader.endObject();

    Map<ColumnNode, ColumnNode> mappingToSourceColumns = new HashMap<>();
    if (graph != null && mappingToSourceColumnsIds != null && !mappingToSourceColumnsIds.isEmpty()) {
        for (Node n : graph.vertexSet()) {
            if (n instanceof ColumnNode) {
                ColumnNode cn = (ColumnNode) n;
                String sourceColumnId = mappingToSourceColumnsIds.get(cn.getId());
                if (sourceColumnId != null) {
                    ColumnNode sourceColumn = sourceColumnIds.get(sourceColumnId);
                    if (sourceColumn != null)
                        mappingToSourceColumns.put(cn, sourceColumn);
                }
            }
        }
    }

    SemanticModel semanticModel = new SemanticModel(id, GraphUtil.asLabeledGraph(graph), sourceColumns,
            mappingToSourceColumns);
    semanticModel.setName(name);
    semanticModel.setDescription(description);

    return semanticModel;
}

From source file:edu.isi.karma.modeling.alignment.SemanticModel.java

License:Apache License

private static ColumnNode readSourceColumn(JsonReader reader) throws IOException {
    String id = null;/*from  www  .  ja v  a 2 s  .c om*/
    String hNodeId = null;
    String columnName = null;

    reader.beginObject();
    while (reader.hasNext()) {
        String key = reader.nextName();
        if (key.equals("id") && reader.peek() != JsonToken.NULL) {
            id = reader.nextString();
        } else if (key.equals("hNodeId") && reader.peek() != JsonToken.NULL) {
            hNodeId = reader.nextString();
        } else if (key.equals("columnName") && reader.peek() != JsonToken.NULL) {
            columnName = reader.nextString();
        } else {
            reader.skipValue();
        }
    }
    reader.endObject();

    ColumnNode cn = new ColumnNode(id, hNodeId, columnName, null, null);
    return cn;
}

From source file:edu.isi.karma.modeling.alignment.SemanticModel.java

License:Apache License

private static Map<String, String> readMappingToSourceColumn(JsonReader reader) throws IOException {
    String id = null;/*from   w  w w  .  j  a v a 2 s  .c o  m*/
    String sourceColumnId = null;

    reader.beginObject();
    while (reader.hasNext()) {
        String key = reader.nextName();
        if (key.equals("id") && reader.peek() != JsonToken.NULL) {
            id = reader.nextString();
        } else if (key.equals("sourceColumnId") && reader.peek() != JsonToken.NULL) {
            sourceColumnId = reader.nextString();
        } else {
            reader.skipValue();
        }
    }
    reader.endObject();

    Map<String, String> mapping = new HashMap<>();
    mapping.put(id, sourceColumnId);
    return mapping;
}

From source file:es.alrocar.poiproxy.fiware.poidp.schema.utils.DateTypeAdapter.java

License:Apache License

@Override
public Date read(JsonReader in) throws IOException {
    if (in.peek() == JsonToken.NULL) {
        in.nextNull();//from  w w w  .j  a  v a  2s.  c o m
        return null;
    }

    String result = in.nextString();
    if (result.isEmpty()) {
        return null;
    }
    Date date = DateUtil.stringToDate(result);
    return date;
}