All Downloads are FREE. Search and download functionalities are using the official Maven repository.

it.ssc.pdv.PDV Maven / Gradle / Ivy

Go to download

This is a JSR331 interface for SSC (Software for the Calculation of the Simplex) is a java library for solving linear programming problems v. 3.0.1. SSC was designed and developed by Stefano Scarioli.

The newest version!
package it.ssc.pdv;


import it.ssc.parser.exception.InvalidDateFormatException;
import it.ssc.step.exception.InvalidDichiarationOptions;
import it.ssc.util.ArrayMap;
import java.util.ArrayList;


/**
 * 
 * Questo classe deve  gestire il  PDV (Program  Data  Vector), nel PDV  devono 
 * essere presenti le variabili che verranno lette dall'input e andranno scritte 
 * nell'output, quindi anche comprensive di nuovi campi che saranno create nella 
 * fase di DECLARE. Il pdv durante la  scrittura dei dataset nativi   SSC 
 * deve includere il numero di byte iniziale per la gestione dei null (array di byte).
 * Se il numero delle variabili e' minore o uguale a otto sara' sufficente un byte, 
 * se saranno < 16 basteranno 2 byte , e cosi via. Inizialmente  questi  byte 
 * saranno tutti impostati a 0x00; per assegnare eventualmente che nel primo blocco 
 * la settima variabile e' a null si impostera' 0x00 OR 2^7, per verificare invece 
 * se nel PDV c'e' una variabile a null, occorre che byte[0] AND 2^7 = 2^7;
 * 

* La parte dati del PDV e' costituita da un hashmap ordinata, le cui chiavi sono * i nomi dei campi. * Ad ogni chiave (nome del campo) e' associato un oggetto con le seguenti * informazioni : *
* 1) Nome del campo (ripetuto dalla chiave) *
* 2) Tipo del campo (di tipo class che e' possibile,utilizzare anche per primitivi, * *
* 3) Valore del dato su quel record, in prativa il valore del campo. Questo attributo * deve essere dello stesso tipo del dato letto. * * * @author Stefano Scarioli * @version 1.0 * */ public class PDV extends Wrapper implements PDVKeep, PDVAll { private ArrayMap> pdv_array; private ArrayList> pdv_list_keep; private boolean record_deleted; private String token_missing=null; public PDV() { pdv_array=new ArrayMap >(); record_deleted=false; } public PDVField addNewField(String key, Class type) throws InvalidDateFormatException { PDVField pdvf=new PDVField(key,type,token_missing); pdv_array.put(key, pdvf); return pdvf; } public void setTokenMissing(String token_miss) { this.token_missing=token_miss; } public PDVField getField(String key) { return pdv_array.get(key); } public int getSizeFieldKeep() throws InvalidDichiarationOptions { if(pdv_list_keep==null) { createArrayFieldKeep(); } return pdv_list_keep.size(); } public ArrayList> getListFieldKeep() throws InvalidDichiarationOptions { if(pdv_list_keep==null) { createArrayFieldKeep(); } return pdv_list_keep; } private void createArrayFieldKeep() throws InvalidDichiarationOptions { Iterable> iterable =pdv_array.getIterableValues(); pdv_list_keep=new ArrayList>(); for (PDVField pdv_field:iterable) { if(!pdv_field.drop) { pdv_list_keep.add(pdv_field); } } if(pdv_list_keep.isEmpty()) { throw new InvalidDichiarationOptions("ERRORE ! Tutte le variabili sono state eliminate con"+ " l'opzione KEEP/DROP. Impossibile creare il dataset di output."); } } public PDVField getField(int index) { return pdv_array.get(index); } public int getSize() { return pdv_array.getSize(); } public boolean isRecordDeleted() { return record_deleted; } public void setRecordDeleted(boolean record_del) { this.record_deleted = record_del; } public void resetAllVarToDropValue(boolean value) { Iterable> iterable =pdv_array.getIterableValues(); for (PDVField pdv_field:iterable) { pdv_field.drop=value; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy