Example usage for com.fasterxml.jackson.core JsonGenerator writeNumberField

List of usage examples for com.fasterxml.jackson.core JsonGenerator writeNumberField

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core JsonGenerator writeNumberField.

Prototype

public final void writeNumberField(String fieldName, BigDecimal value)
        throws IOException, JsonGenerationException 

Source Link

Document

Convenience method for outputting a field entry ("member") that has the specified numeric value.

Usage

From source file:org.elasticsearch.client.sniff.ElasticsearchNodesSnifferTests.java

private static SniffResponse buildSniffResponse(ElasticsearchNodesSniffer.Scheme scheme) throws IOException {
    int numNodes = RandomNumbers.randomIntBetween(getRandom(), 1, 5);
    List<Node> nodes = new ArrayList<>(numNodes);
    JsonFactory jsonFactory = new JsonFactory();
    StringWriter writer = new StringWriter();
    JsonGenerator generator = jsonFactory.createGenerator(writer);
    generator.writeStartObject();/*www .  java2s. com*/
    if (getRandom().nextBoolean()) {
        generator.writeStringField("cluster_name", "elasticsearch");
    }
    if (getRandom().nextBoolean()) {
        generator.writeObjectFieldStart("bogus_object");
        generator.writeEndObject();
    }
    generator.writeObjectFieldStart("nodes");
    for (int i = 0; i < numNodes; i++) {
        String nodeId = RandomStrings.randomAsciiOfLengthBetween(getRandom(), 5, 10);
        String host = "host" + i;
        int port = RandomNumbers.randomIntBetween(getRandom(), 9200, 9299);
        HttpHost publishHost = new HttpHost(host, port, scheme.toString());
        Set<HttpHost> boundHosts = new HashSet<>();
        boundHosts.add(publishHost);

        if (randomBoolean()) {
            int bound = between(1, 5);
            for (int b = 0; b < bound; b++) {
                boundHosts.add(new HttpHost(host + b, port, scheme.toString()));
            }
        }

        int numAttributes = between(0, 5);
        Map<String, List<String>> attributes = new HashMap<>(numAttributes);
        for (int j = 0; j < numAttributes; j++) {
            int numValues = frequently() ? 1 : between(2, 5);
            List<String> values = new ArrayList<>();
            for (int v = 0; v < numValues; v++) {
                values.add(j + "value" + v);
            }
            attributes.put("attr" + j, values);
        }

        Node node = new Node(publishHost, boundHosts, randomAsciiAlphanumOfLength(5),
                randomAsciiAlphanumOfLength(5),
                new Node.Roles(randomBoolean(), randomBoolean(), randomBoolean()), attributes);

        generator.writeObjectFieldStart(nodeId);
        if (getRandom().nextBoolean()) {
            generator.writeObjectFieldStart("bogus_object");
            generator.writeEndObject();
        }
        if (getRandom().nextBoolean()) {
            generator.writeArrayFieldStart("bogus_array");
            generator.writeStartObject();
            generator.writeEndObject();
            generator.writeEndArray();
        }
        boolean isHttpEnabled = rarely() == false;
        if (isHttpEnabled) {
            nodes.add(node);
            generator.writeObjectFieldStart("http");
            generator.writeArrayFieldStart("bound_address");
            for (HttpHost bound : boundHosts) {
                generator.writeString(bound.toHostString());
            }
            generator.writeEndArray();
            if (getRandom().nextBoolean()) {
                generator.writeObjectFieldStart("bogus_object");
                generator.writeEndObject();
            }
            generator.writeStringField("publish_address", publishHost.toHostString());
            if (getRandom().nextBoolean()) {
                generator.writeNumberField("max_content_length_in_bytes", 104857600);
            }
            generator.writeEndObject();
        }

        List<String> roles = Arrays.asList(new String[] { "master", "data", "ingest" });
        Collections.shuffle(roles, getRandom());
        generator.writeArrayFieldStart("roles");
        for (String role : roles) {
            if ("master".equals(role) && node.getRoles().isMasterEligible()) {
                generator.writeString("master");
            }
            if ("data".equals(role) && node.getRoles().isData()) {
                generator.writeString("data");
            }
            if ("ingest".equals(role) && node.getRoles().isIngest()) {
                generator.writeString("ingest");
            }
        }
        generator.writeEndArray();

        generator.writeFieldName("version");
        generator.writeString(node.getVersion());
        generator.writeFieldName("name");
        generator.writeString(node.getName());

        if (numAttributes > 0) {
            generator.writeObjectFieldStart("attributes");
            for (Map.Entry<String, List<String>> entry : attributes.entrySet()) {
                if (entry.getValue().size() == 1) {
                    generator.writeStringField(entry.getKey(), entry.getValue().get(0));
                } else {
                    for (int v = 0; v < entry.getValue().size(); v++) {
                        generator.writeStringField(entry.getKey() + "." + v, entry.getValue().get(v));
                    }
                }
            }
            generator.writeEndObject();
        }
        generator.writeEndObject();
    }
    generator.writeEndObject();
    generator.writeEndObject();
    generator.close();
    return SniffResponse.buildResponse(writer.toString(), nodes);
}

From source file:de.fraunhofer.iosb.ilt.sta.serialize.EntitySerializer.java

@Override
public void serialize(Entity entity, JsonGenerator gen, SerializerProvider serializers)
        throws IOException, JsonProcessingException {
    gen.writeStartObject();//from   www  .j  ava  2 s.  co  m
    try {
        BasicBeanDescription beanDescription = serializers.getConfig()
                .introspect(serializers.constructType(entity.getClass()));
        List<BeanPropertyDefinition> properties = beanDescription.findProperties();
        for (BeanPropertyDefinition property : properties) {
            // 0. check if it should be serialized
            if (selectedProperties != null) {
                if (!selectedProperties.contains(property.getName())) {
                    continue;
                }
            }
            // 1. is it a NavigableElement?
            if (NavigableElement.class.isAssignableFrom(property.getAccessor().getRawType())) {
                Object rawValue = property.getAccessor().getValue(entity);
                if (rawValue != null) {
                    NavigableElement value = (NavigableElement) rawValue;
                    // If navigation link set, output navigation link.
                    if (value.getNavigationLink() != null && !value.getNavigationLink().isEmpty()) {
                        gen.writeFieldName(property.getName() + "@iot.navigationLink");
                        gen.writeString(value.getNavigationLink());
                    }
                    // If object should not be exported, skip any further processing.
                    if (!value.isExportObject()) {
                        continue;
                    }
                }
            }
            // 2. check if property has CustomSerialization annotation -> use custom serializer
            Annotation annotation = property.getAccessor().getAnnotation(CustomSerialization.class);
            if (annotation != null) {
                serializeFieldCustomized(entity, gen, property, properties, (CustomSerialization) annotation);
            } else {
                serializeField(entity, gen, serializers, beanDescription, property);
            }
            // 3. check if property is EntitySet than eventually write count
            if (EntitySet.class.isAssignableFrom(property.getAccessor().getRawType())) {
                Object rawValue = property.getAccessor().getValue(entity);
                if (rawValue != null) {
                    EntitySet set = (EntitySet) rawValue;
                    long count = set.getCount();
                    if (count >= 0) {
                        gen.writeNumberField(property.getName() + "@iot.count", count);
                    }
                    String nextLink = set.getNextLink();
                    if (nextLink != null) {
                        gen.writeStringField(property.getName() + "@iot.nextLink", nextLink);
                    }
                }
            }
        }
    } catch (Exception e) {
        LOGGER.error("could not serialize Entity", e);
        throw new IOException("could not serialize Entity", e);
    } finally {
        gen.writeEndObject();
    }
}

From source file:com.tage.calcite.adapter.druid.DruidQuery.java

private QuerySpec getQuery(RelDataType rowType, RexNode filter, List<RexNode> projects,
        ImmutableBitSet groupSet, List<AggregateCall> aggCalls, List<String> aggNames) {
    QueryType queryType = QueryType.SELECT;
    final Translator translator = new Translator(druidTable, rowType);
    List<String> fieldNames = rowType.getFieldNames();

    Json jsonFilter = null;//from   w w  w . j av a 2 s  .  c  o  m
    if (filter != null) {
        jsonFilter = translator.translateFilter(filter);
        translator.metrics.clear();
        translator.dimensions.clear();
    }

    if (projects != null) {
        final ImmutableList.Builder<String> builder = ImmutableList.builder();
        for (RexNode project : projects) {
            builder.add(translator.translate(project));
        }
        fieldNames = builder.build();
    }

    final List<String> dimensions = new ArrayList<>();
    final List<JsonAggregation> aggregations = new ArrayList<>();

    if (groupSet != null) {
        assert aggCalls != null;
        assert aggNames != null;
        assert aggCalls.size() == aggNames.size();
        queryType = QueryType.GROUP_BY;

        final ImmutableList.Builder<String> builder = ImmutableList.builder();
        for (int groupKey : groupSet) {
            final String s = fieldNames.get(groupKey);
            dimensions.add(s);
            builder.add(s);
        }
        for (Pair<AggregateCall, String> agg : Pair.zip(aggCalls, aggNames)) {
            final JsonAggregation jsonAggregation = getJsonAggregation(fieldNames, agg.right, agg.left);
            aggregations.add(jsonAggregation);
            builder.add(jsonAggregation.name);
        }
        fieldNames = builder.build();
    } else {
        assert aggCalls == null;
        assert aggNames == null;
    }

    final StringWriter sw = new StringWriter();
    final JsonFactory factory = new JsonFactory();
    try {
        final JsonGenerator generator = factory.createGenerator(sw);

        switch (queryType) {
        case GROUP_BY:
            generator.writeStartObject();

            if (aggregations.isEmpty()) {
                // Druid requires at least one aggregation, otherwise gives:
                //   Must have at least one AggregatorFactory
                aggregations.add(new JsonAggregation("longSum", "unit_sales", "unit_sales"));
            }

            generator.writeStringField("queryType", "groupBy");
            generator.writeStringField("dataSource", druidTable.dataSource);
            generator.writeStringField("granularity", "all");
            writeField(generator, "dimensions", dimensions);
            writeFieldIf(generator, "limitSpec", null);
            writeFieldIf(generator, "filter", jsonFilter);
            writeField(generator, "aggregations", aggregations);
            writeFieldIf(generator, "postAggregations", null);
            writeField(generator, "intervals", druidTable.intervals);
            writeFieldIf(generator, "having", null);

            generator.writeEndObject();
            break;

        case SELECT:
            generator.writeStartObject();

            generator.writeStringField("queryType", "select");
            generator.writeStringField("dataSource", druidTable.dataSource);
            generator.writeStringField("descending", "false");
            writeField(generator, "intervals", druidTable.intervals);
            writeFieldIf(generator, "filter", jsonFilter);
            writeField(generator, "dimensions", translator.dimensions);
            writeField(generator, "metrics", translator.metrics);
            generator.writeStringField("granularity", "all");

            generator.writeFieldName("pagingSpec");
            generator.writeStartObject();
            final int fetch = CalciteConnectionProperty.DRUID_FETCH.wrap(new Properties()).getInt();
            generator.writeNumberField("threshold", fetch);
            generator.writeEndObject();

            generator.writeEndObject();
            break;

        default:
            throw new AssertionError("unknown query type " + queryType);
        }

        generator.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return new QuerySpec(queryType, sw.toString(), fieldNames);
}

From source file:pl.selvin.android.syncframework.content.TableInfo.java

public void GetChanges(SQLiteDatabase db, JsonGenerator gen, ArrayList<TableInfo> notifyTableInfo)
        throws IOException {
    String[] cols = new String[columns.length + 3];
    int i = 0;/*from   w  ww .jav  a2 s  . co  m*/
    for (; i < columns.length; i++)
        cols[i] = columns[i].name;
    cols[i] = _.uri;
    cols[i + 1] = _.tempId;
    cols[i + 2] = _.isDeleted;
    Cursor c = db.query(name, cols, _.isDirtyP, new String[] { "1" }, null, null, null);
    //to fix startPos  > actual rows for large cursors db operations should be done after cursor is closed ...
    final ArrayList<OperationHolder> operations = new ArrayList<OperationHolder>();
    if (c.moveToFirst()) {
        if (!notifyTableInfo.contains(this))
            notifyTableInfo.add(this);
        do {

            gen.writeStartObject();
            gen.writeObjectFieldStart(_.__metadata);
            gen.writeBooleanField(_.isDirty, true);
            gen.writeStringField(_.type, scope_name);
            //Log.d("before", scope_name + ":" + c.getLong(i + 3));
            String uri = c.getString(i);
            //Log.d("after", scope_name + ":" + c.getLong(i + 3));
            if (uri == null) {
                gen.writeStringField(_.tempId, c.getString(i + 1));
            } else {
                gen.writeStringField(_.uri, uri);
                final ContentValues update = new ContentValues(1);
                update.put(_.isDirty, 0);
                operations.add(new OperationHolder(name, OperationHolder.UPDATE, update, uri));
            }
            boolean isDeleted = c.getInt(i + 2) == 1;
            if (isDeleted) {
                gen.writeBooleanField(_.isDeleted, true);
                gen.writeEndObject();// meta
                operations.add(new OperationHolder(name, OperationHolder.DELETE, null, uri));
            } else {
                gen.writeEndObject();// meta
                for (i = 0; i < columns.length; i++) {
                    if (columns[i].nullable && c.isNull(i)) {
                        gen.writeNullField(columns[i].name);
                    } else {
                        switch (columns[i].type) {
                        case ColumnType.BLOB:
                            gen.writeBinaryField(columns[i].name, c.getBlob(i));
                            break;
                        case ColumnType.BOOLEAN:
                            gen.writeBooleanField(columns[i].name, c.getLong(i) == 1);
                            break;
                        case ColumnType.INTEGER:
                            gen.writeNumberField(columns[i].name, c.getLong(i));
                            break;
                        case ColumnType.DATETIME:
                            try {
                                gen.writeStringField(columns[i].name,
                                        String.format(msdate, sdf.parse(c.getString(i)).getTime()));
                            } catch (Exception e) {
                                if (BuildConfig.DEBUG) {
                                    Log.e("ListSync", e.getLocalizedMessage());
                                }
                            }
                            break;
                        case ColumnType.NUMERIC:
                            gen.writeNumberField(columns[i].name, c.getDouble(i));
                            break;
                        default:
                            gen.writeStringField(columns[i].name, c.getString(i));
                            break;
                        }
                    }
                }
            }
            gen.writeEndObject(); // end of row
        } while (c.moveToNext());
    }
    c.close();
    for (OperationHolder operation : operations)
        operation.execute(db);
}

From source file:models.GroupSerializer.java

@Override
public void serialize(Group group, JsonGenerator jgen, SerializerProvider provider) throws IOException {
    jgen.writeStartObject();//from   w ww  .j  ava  2s. c o m
    jgen.writeStringField("id", group.getId());
    jgen.writeStringField("comment", parseReferencesInComment(group));
    jgen.writeStringField("label", group.getLabel());
    jgen.writeFieldName("unit");
    jgen.writeObject(group.getUnit());
    jgen.writeFieldName("type");
    jgen.writeObject(group.getType());

    jgen.writeFieldName("commonKeywords");
    jgen.writeObject(group.getCommonKeywords());

    jgen.writeFieldName("dimensions");
    jgen.writeStartArray();
    for (Dimension dim : group.getDimSet().dimensions) {
        jgen.writeStartObject();
        jgen.writeFieldName("id");
        jgen.writeObject(dim.getId());
        jgen.writeFieldName("keywords");
        jgen.writeObject(dim.keywords);
        jgen.writeFieldName("keywordsPosition");
        jgen.writeObject(dim.keywordsPosition);
        jgen.writeFieldName("orientation");
        jgen.writeObject(group.getDimSet().getDimensionOrientation(dim));
        jgen.writeEndObject();
    }
    jgen.writeEndArray();

    jgen.writeFieldName("overlap");
    jgen.writeStartArray();
    for (Group otherGroup : group.getOverlappingGroups()) {
        jgen.writeStartObject();
        jgen.writeStringField("id", otherGroup.getId());
        jgen.writeStringField("label", otherGroup.getLabel());
        jgen.writeEndObject();
    }
    jgen.writeEndArray();

    jgen.writeFieldName("references");
    jgen.writeStartArray();
    for (Reference ref : group.getReferences()) {
        jgen.writeObject(ref);
    }
    jgen.writeEndArray();

    jgen.writeFieldName("sourceRelations");
    jgen.writeStartArray();
    for (SourceRelation sourceRelation : group.getSourceRelations()) {
        jgen.writeObject(sourceRelation);
    }
    jgen.writeEndArray();

    jgen.writeFieldName("elementsURI");
    jgen.writeStartObject();
    for (SingleElement element : group.getElements()) {
        jgen.writeStringField(StringUtils.join(element.getKeywords(), "+") + "+" + element.getUnit().getId(),
                element.getId());
    }
    jgen.writeEndObject();

    if (group.getType() == Type.COEFFICIENT) {
        jgen.writeFieldName("elementsValue");
        jgen.writeStartObject();
        for (SingleElement element : group.getElements()) {
            Coefficient coeff = (Coefficient) element;
            jgen.writeFieldName(StringUtils.join(element.getKeywords(), "+") + "+" + element.getUnit().getId());
            jgen.writeStartObject();
            jgen.writeNumberField("value", coeff.getValue().value);
            jgen.writeNumberField("uncertainty", coeff.getValue().uncertainty);
            jgen.writeEndObject();
        }
        jgen.writeEndObject();
    } else {
        jgen.writeFieldName("elementsImpactsAndFlows");
        jgen.writeStartObject();
        for (SingleElement element : group.getElements()) {
            Process process = (Process) element;
            jgen.writeFieldName(StringUtils.join(element.getKeywords(), "+") + "+" + element.getUnit().getId());
            jgen.writeStartObject();
            for (ElementaryFlow flow : process.getCalculatedFlows().values()) {
                jgen.writeFieldName(flow.getType().getId());
                jgen.writeStartObject();
                jgen.writeNumberField("value", flow.getValue().value);
                jgen.writeNumberField("uncertainty", flow.getValue().uncertainty);
                jgen.writeEndObject();
            }
            for (Impact impact : process.getImpacts().values()) {
                jgen.writeFieldName(impact.getType().getId());
                jgen.writeStartObject();
                jgen.writeNumberField("value", impact.getValue().value);
                jgen.writeNumberField("uncertainty", impact.getValue().uncertainty);
                jgen.writeEndObject();
            }
            jgen.writeEndObject();
        }
        jgen.writeEndObject();
    }

    jgen.writeEndObject();
}

From source file:com.tmount.business.carhot.controller.CarHotInsertCarInfo.java

@Override
protected void doService(RequestParam requestParam, JsonGenerator responseBodyJson)
        throws ShopException, JsonGenerationException, IOException {
    long account_id = ParamData.getLong(requestParam.getBodyNode(), "account_id"); //account_id
    String car_color = ParamData.getString(requestParam.getBodyNode(), "car_color"); //
    int car_type = ParamData.getInt(requestParam.getBodyNode(), "car_type"); //
    String car_plate_number = ParamData.getString(requestParam.getBodyNode(), "car_plate_number"); //?
    String car_carcase_num = ParamData.getString(requestParam.getBodyNode(), "car_carcase_num"); //?
    String car_engine_num = ParamData.getString(requestParam.getBodyNode(), "car_engine_num"); //??
    String car_driving_license_date = ParamData.getString(requestParam.getBodyNode(),
            "car_driving_license_date"); //
    String city_code = ParamData.getString(requestParam.getBodyNode(), "city_code"); //
    CarInfo carinfo = new CarInfo();
    carinfo.setAccount_id(account_id);//w  ww .  j a  va 2  s. co m
    carinfo.setCar_color(car_color);
    carinfo.setCar_driving_license_date(car_driving_license_date);
    carinfo.setCar_type(car_type);
    carinfo.setCar_plate_number(car_plate_number);
    if (StringUtils.isNotBlank(car_carcase_num)) {
        carinfo.setCar_carcase_num(car_carcase_num);
    }
    if (StringUtils.isNotBlank(city_code)) {
        carinfo.setCity_code(city_code);
    }
    carinfo.setCar_engine_num(car_engine_num);
    Long user_id = userService.getUserMessage(account_id); //?account_iduser_id
    if (null != user_id) {
        List<CarInfo> carList = carInfoService.getCarInfoByPlateNum(carinfo);
        if (carList == null || (carList != null && carList.size() <= 0)) {

            List<UserRelationCarInfo> list = userService.getRelationCarInfo(user_id); //?user_id ?
            int i = 0;
            for (UserRelationCarInfo terminalCar : list) {
                if ("1".equals(terminalCar.getIs_default())) {
                    i++;
                }
            }
            UserRelationCarInfo userRelationCarInfo = new UserRelationCarInfo();
            ////// 20150421
            int car_id = carInfoService.queryId("car_id") + 1; //??
            TestUpd testupd = new TestUpd();
            testupd.setName("car_id");
            testupd.setValue(car_id);
            carInfoService.updtestupd(testupd); //??         
            /////end
            carinfo.setCar_id(car_id);
            carInfoService.carhotInsert(carinfo);
            userRelationCarInfo.setCar_id(car_id);
            userRelationCarInfo.setUser_id(user_id.intValue());
            if (i > 0) {
                userRelationCarInfo.setIs_default("0");
                userService.insertRelationUserAndCar(userRelationCarInfo); //terminal_car??
            } else {
                userRelationCarInfo.setIs_default("1");
                userService.insertRelationUserAndCar(userRelationCarInfo);
            }
            responseBodyJson.writeNumberField("result", 1); //??

        } else {
            throw new ShopBusiException(ShopBusiErrorBundle.COMMON, new Object[] { "?" });
        }

    } else {
        throw new ShopBusiException(ShopBusiErrorBundle.COMMON, new Object[] { "?" });
    }

}

From source file:tds.student.web.backing.TestShellScriptsBacking.java

private void addTestSegments() throws IOException, ReturnStatusException {
    TestSession testSession = StudentContext.getSession();
    // _studentSettings = FacesContextHelper.getBean ("studentSettings",
    // StudentSettings.class);
    OpportunitySegments oppSegments = null;

    // load opp segments only if there are any test segments
    if (_testProps.getSegments().size() > 0) {
        oppSegments = this._iOpportunityService.getSegments(this._testOpportunity.getOppInstance(),
                !this._studentSettings.isReadOnly());
    }/*www . java  2  s  .  com*/

    StringWriter sw = new StringWriter();
    JsonFactory jsonFactory = new JsonFactory();
    JsonGenerator writer = jsonFactory.createGenerator(sw);

    writer.writeStartArray(); // [

    for (final TestSegment testSegment : _testProps.getSegments()) {
        OpportunitySegment oppSegment = null;

        // find opportunity segment
        if (oppSegments != null) {
            oppSegment = (OpportunitySegment) CollectionUtils.find(oppSegments, new Predicate() {
                @Override
                public boolean evaluate(Object arg0) {
                    if (StringUtils.equals(((OpportunitySegment) arg0).getId(), testSegment.getId()))
                        return true;
                    return false;
                }
            });
        }

        // figure out segment permeability
        int isPermeable = testSegment.getIsPermeable();
        int updatePermeable = isPermeable;

        // these are local override rules (reviewed with Larry)
        if (oppSegment != null) {
            /*
             * if -1, use the defined value for the segment as returned by
             * IB_GetSegments if not -1, then the local value defines the temporary
             * segment permeability
             */
            if (oppSegment.getIsPermeable() != -1) {
                isPermeable = oppSegment.getIsPermeable();

                /*
                 * The default permeability is restored when the student leaves the
                 * segment while testing. Assuming the segment is impermeable, this
                 * allows the student one entry into the segment during the sitting.
                 * When the student leaves the segment, is membrane is enforced by the
                 * student app. The database will restore the default value of the
                 * segment membrane when the test is paused.
                 */
                if (oppSegment.getRestorePermOn() != "segment") {
                    updatePermeable = oppSegment.getIsPermeable();
                }
            }

            // NOTE: When student enters segment, set isPermeable = updatePermeable
        }

        // if read only mode is enabled then we should let user have access
        if (_studentSettings.isReadOnly()) {
            isPermeable = 1;
            updatePermeable = 1;
        }

        // figure out segment approval
        int entryApproval = testSegment.getEntryApproval();
        int exitApproval = testSegment.getExitApproval();

        // NOTE: If proctorless test then don't require entry/exit approval
        // (nobody to approve it)
        if (testSession.isProctorless() || _studentSettings.isReadOnly()) {
            entryApproval = 0;
            exitApproval = 0;
        }
        // BUG #22642: Entry and Exit approvals are not needed from Test level
        // review screen when approval = 2
        else if (getViewPageNumber() > 0) {
            if (testSegment.getEntryApproval() == 2)
                entryApproval = 0;
            if (testSegment.getExitApproval() == 2)
                exitApproval = 0;
        }

        // write segment json
        writer.writeStartObject();
        writer.writeStringField("type", "object"); // {
        writer.writeStringField("id", testSegment.getId());
        writer.writeNumberField("position", testSegment.getPosition());
        writer.writeStringField("label", testSegment.getLabel());
        writer.writeBooleanField("itemReview", testSegment.isItemReview());
        writer.writeNumberField("isPermeable", isPermeable);
        writer.writeNumberField("updatePermeable", updatePermeable);
        writer.writeNumberField("entryApproval", entryApproval);
        writer.writeNumberField("exitApproval", exitApproval);

        // Looks like we don't use this variable in javascript (removed for 2012)
        // Test adaptiveSegment =
        // TestOpportunity.AdaptiveTest.GetSegmentTest(testSegment.ID);
        // writer.WriteObject("length", (adaptiveSegment != null) ?
        // adaptiveSegment.TotalMinLength : 0);

        writer.writeEndObject(); // }
    }

    writer.writeEndArray(); // ]

    writer.close();

    // write out javascript
    StringBuilder javascript = new StringBuilder();
    javascript.append("var tdsSegments = ");
    javascript.append(sw.toString());
    javascript.append("; ");

    this.getClientScript().addToJsCode(javascript.toString());

}

From source file:net.opentsdb.tsd.HttpSampleSerializer.java

/**
 * Format the results from a timeseries data query
 * @param data_query The TSQuery object used to fetch the results
 * @param results The data fetched from storage
 * @param globals An optional list of global annotation objects
 * @return A ChannelBuffer object to pass on to the caller
 *///  w w  w.  j av a  2s . c o  m
public ChannelBuffer formatQueryV1(final TSQuery data_query, final List<DataPoints[]> results,
        final List<Annotation> globals) {

    final boolean as_arrays = this.query.hasQueryStringParam("arrays");
    final String jsonp = this.query.getQueryStringParam("jsonp");

    // todo - this should be streamed at some point since it could be HUGE
    final ChannelBuffer response = ChannelBuffers.dynamicBuffer();
    final OutputStream output = new ChannelBufferOutputStream(response);
    try {
        // don't forget jsonp
        if (jsonp != null && !jsonp.isEmpty()) {
            output.write((jsonp + "(").getBytes(query.getCharset()));
        }
        JsonGenerator json = JSON.getFactory().createGenerator(output);
        json.writeStartArray();

        for (DataPoints[] separate_dps : results) {
            for (DataPoints dps : separate_dps) {
                json.writeStartObject();

                json.writeStringField("metric", dps.metricName());

                json.writeFieldName("tags");
                json.writeStartObject();
                if (dps.getTags() != null) {
                    for (Map.Entry<String, String> tag : dps.getTags().entrySet()) {
                        json.writeStringField(tag.getKey(), tag.getValue());
                    }
                }
                json.writeEndObject();

                json.writeFieldName("aggregateTags");
                json.writeStartArray();
                if (dps.getAggregatedTags() != null) {
                    for (String atag : dps.getAggregatedTags()) {
                        json.writeString(atag);
                    }
                }
                json.writeEndArray();

                if (data_query.getShowTSUIDs()) {
                    json.writeFieldName("tsuids");
                    json.writeStartArray();
                    final List<String> tsuids = dps.getTSUIDs();
                    Collections.sort(tsuids);
                    for (String tsuid : tsuids) {
                        json.writeString(tsuid);
                    }
                    json.writeEndArray();
                }

                if (!data_query.getNoAnnotations()) {
                    final List<Annotation> annotations = dps.getAnnotations();
                    if (annotations != null) {
                        Collections.sort(annotations);
                        json.writeArrayFieldStart("annotations");
                        for (Annotation note : annotations) {
                            json.writeObject(note);
                        }
                        json.writeEndArray();
                    }

                    if (globals != null && !globals.isEmpty()) {
                        Collections.sort(globals);
                        json.writeArrayFieldStart("globalAnnotations");
                        for (Annotation note : globals) {
                            json.writeObject(note);
                        }
                        json.writeEndArray();
                    }
                }

                // now the fun stuff, dump the data
                json.writeFieldName("dps");

                // default is to write a map, otherwise write arrays
                if (as_arrays) {
                    json.writeStartArray();
                    for (final DataPoint dp : dps) {
                        if (dp.timestamp() < data_query.startTime() || dp.timestamp() > data_query.endTime()) {
                            continue;
                        }
                        final long timestamp = data_query.getMsResolution() ? dp.timestamp()
                                : dp.timestamp() / 1000;
                        json.writeStartArray();
                        json.writeNumber(timestamp);
                        json.writeNumber(dp.isInteger() ? dp.longValue() : dp.doubleValue());
                        json.writeEndArray();
                    }
                    json.writeEndArray();
                } else {
                    json.writeStartObject();
                    for (final DataPoint dp : dps) {
                        if (dp.timestamp() < (data_query.startTime())
                                || dp.timestamp() > (data_query.endTime())) {
                            continue;
                        }
                        final long timestamp = data_query.getMsResolution() ? dp.timestamp()
                                : dp.timestamp() / 1000;
                        json.writeNumberField(Long.toString(timestamp),
                                dp.isInteger() ? dp.longValue() : dp.doubleValue());
                    }
                    json.writeEndObject();
                }

                // close the results for this particular query
                json.writeEndObject();
            }
        }

        // close
        json.writeEndArray();
        json.close();

        if (jsonp != null && !jsonp.isEmpty()) {
            output.write(")".getBytes());
        }
        return response;
    } catch (IOException e) {
        LOG.error("Unexpected exception", e);
        throw new RuntimeException(e);
    }
}

From source file:net.opentsdb.tsd.HttpJsonSerializer.java

/**
 * Format the results from a timeseries data query
 * @param data_query The TSQuery object used to fetch the results
 * @param results The data fetched from storage
 * @param globals An optional list of global annotation objects
 * @return A ChannelBuffer object to pass on to the caller
 *//*  w w  w. j av a2s.c  o m*/
public ChannelBuffer formatQueryV1(final TSQuery data_query, final List<DataPoints[]> results,
        final List<Annotation> globals) {

    final boolean as_arrays = this.query.hasQueryStringParam("arrays");
    final String jsonp = this.query.getQueryStringParam("jsonp");

    // todo - this should be streamed at some point since it could be HUGE
    final ChannelBuffer response = ChannelBuffers.dynamicBuffer();
    final OutputStream output = new ChannelBufferOutputStream(response);
    try {
        // don't forget jsonp
        if (jsonp != null && !jsonp.isEmpty()) {
            output.write((jsonp + "(").getBytes(query.getCharset()));
        }
        JsonGenerator json = JSON.getFactory().createGenerator(output);
        json.writeStartArray();

        for (DataPoints[] separate_dps : results) {
            for (DataPoints dps : separate_dps) {
                json.writeStartObject();

                json.writeStringField("metric", dps.metricName());

                json.writeFieldName("tags");
                json.writeStartObject();
                if (dps.getTags() != null) {
                    for (Map.Entry<String, String> tag : dps.getTags().entrySet()) {
                        json.writeStringField(tag.getKey(), tag.getValue());
                    }
                }
                json.writeEndObject();

                json.writeFieldName("aggregateTags");
                json.writeStartArray();
                if (dps.getAggregatedTags() != null) {
                    for (String atag : dps.getAggregatedTags()) {
                        json.writeString(atag);
                    }
                }
                json.writeEndArray();

                if (data_query.getShowTSUIDs()) {
                    json.writeFieldName("tsuids");
                    json.writeStartArray();
                    final List<String> tsuids = dps.getTSUIDs();
                    Collections.sort(tsuids);
                    for (String tsuid : tsuids) {
                        json.writeString(tsuid);
                    }
                    json.writeEndArray();
                }

                if (!data_query.getNoAnnotations()) {
                    final List<Annotation> annotations = dps.getAnnotations();
                    if (annotations != null) {
                        Collections.sort(annotations);
                        json.writeArrayFieldStart("annotations");
                        for (Annotation note : annotations) {
                            json.writeObject(note);
                        }
                        json.writeEndArray();
                    }

                    if (globals != null && !globals.isEmpty()) {
                        Collections.sort(globals);
                        json.writeArrayFieldStart("globalAnnotations");
                        for (Annotation note : globals) {
                            json.writeObject(note);
                        }
                        json.writeEndArray();
                    }
                }

                // now the fun stuff, dump the data
                json.writeFieldName("dps");

                // default is to write a map, otherwise write arrays
                if (as_arrays) {
                    json.writeStartArray();
                    for (final DataPoint dp : dps) {
                        if (dp.timestamp() < data_query.startTime() || dp.timestamp() > data_query.endTime()) {
                            continue;
                        }
                        final long timestamp = data_query.getMsResolution() ? dp.timestamp()
                                : dp.timestamp() / 1000;
                        json.writeStartArray();
                        json.writeNumber(timestamp);
                        if (dp.isInteger()) {
                            json.writeNumber(dp.longValue());
                        } else {
                            json.writeNumber(dp.doubleValue());
                        }
                        json.writeEndArray();
                    }
                    json.writeEndArray();
                } else {
                    json.writeStartObject();
                    for (final DataPoint dp : dps) {
                        if (dp.timestamp() < (data_query.startTime())
                                || dp.timestamp() > (data_query.endTime())) {
                            continue;
                        }
                        final long timestamp = data_query.getMsResolution() ? dp.timestamp()
                                : dp.timestamp() / 1000;
                        if (dp.isInteger()) {
                            json.writeNumberField(Long.toString(timestamp), dp.longValue());
                        } else {
                            json.writeNumberField(Long.toString(timestamp), dp.doubleValue());
                        }
                    }
                    json.writeEndObject();
                }

                // close the results for this particular query
                json.writeEndObject();
            }
        }

        // close
        json.writeEndArray();
        json.close();

        if (jsonp != null && !jsonp.isEmpty()) {
            output.write(")".getBytes());
        }
        return response;
    } catch (IOException e) {
        LOG.error("Unexpected exception", e);
        throw new RuntimeException(e);
    }
}