/** * ============LICENSE_START==================================================== * org.onap.aaf * =========================================================================== * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. * =========================================================================== * 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. * ============LICENSE_END==================================================== * */ package org.onap.aaf.auth.batch.approvalsets; import java.text.ParseException; import java.util.Date; import java.util.List; import org.onap.aaf.cadi.util.CSV.Writer; import org.onap.aaf.misc.env.util.Chrono; public class Pending { public static final String REMIND = "remind"; int qty; boolean hasNew; Date earliest; /** * Use this Constructor when there is no Last Notified Date */ public Pending() { qty = 1; hasNew = true; earliest = null; } /** * Use this constructor to indicate when last Notified * @param last_notified */ public Pending(Date last_notified) { qty = 1; hasNew = last_notified==null; earliest = last_notified; } /** * Create from CSV Row * @param row * @throws ParseException */ public Pending(List row) throws ParseException { hasNew = Boolean.parseBoolean(row.get(2)); String d = row.get(3); if(d==null || d.isEmpty()) { earliest = null; } else { earliest = Chrono.dateOnlyFmt.parse(d); } qty = Integer.parseInt(row.get(4)); } /** * Write CSV Row * @param approveCW * @param key */ public void row(Writer approveCW, String key) { approveCW.row(REMIND,key,hasNew,Chrono.dateOnlyStamp(earliest),qty); } public void inc() { ++qty; } public void inc(Pending value) { qty+=value.qty; } public void earliest(Date lastnotified) { if(lastnotified==null) { hasNew=true; } else if (earliest==null || lastnotified.before(earliest)) { earliest = lastnotified; } } public int qty() { return qty; } public Date earliest() { return earliest; } public boolean newApprovals() { return hasNew; } }