Java tutorial
/** * Copyright 2014 Yahoo! Inc. Licensed under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with the * License. You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law * or agreed to in writing, software distributed under the License is * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. See accompanying * LICENSE file. */ package com.yahoo.sql4d.delete; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.yahoo.sql4d.CrudStatementMeta; import com.yahoo.sql4d.query.nodes.Interval; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.joda.time.DateTime; import org.json.JSONObject; /** * Delete statement's meta data. * * @author srikalyan */ public class DeleteMeta extends CrudStatementMeta { public String id;// UUid public Interval interval = null; public List<Interval> segmentsToDelete = null;// This will be determined at runtime. public List<String> dimensions = new ArrayList<>();// This will be determined at runtime. public List<String> metrics = new ArrayList<>();// This will be determined at runtime. public DeleteMeta() { } public DeleteMeta(String dataSource, Interval interval) { super(dataSource); this.interval = interval; } @Override public String toString() { return getJson().toString(2); } @Override public JSONObject getJson() { return new JSONObject(getDataMap()); } /** * Retain segments only overlapping with the range. * @param allSegments */ public void filterSegments(List<Interval> allSegments) { segmentsToDelete = Lists.newArrayList(Iterables.filter(allSegments, new Predicate<Interval>() { @Override public boolean apply(Interval i) { return i.fallsIn(interval); } })); } @Override public Map<String, Object> getDataMap() { // For each instance of data generation generate a new id. id = String.format("kill_%s_%s_%s_%s", dataSource, interval.getStartTime(), interval.getEndTime(), new DateTime().toString()); Map<String, Object> map = super.getDataMap(); map.put("type", "kill"); map.put("dataSource", dataSource); map.put("interval", interval.toString()); map.put("id", id); return map; } public <T> void postProcess(T anyContext) { } }