/* ----------------------------------------
 * Origin  : GFI INFORMATIQUE 
 * Project : CDPP Propagation Tool 
 * ----------------------------------------
 * History 
 * Version : 01/05/2015 : SCA : V2.1
 * Version : 19/07/2022 : LBE : V2.5
 * Redmine 7278: Build gaps in VPlot from sampling
 * Version : 30/11/2022 : LBE : V2.6
 * DM-ID : Redmine #l0481 : 30/11/2022 : HCS added
 * Version : 06/04/2023 : LBE : V2.7
 * DM-ID : redmine#8642 : 06/04/2023 : Added 3D shockwave
 * ----------------------------------------
 */
package fr.tlse.irap.server.serviceDAO;

import fr.tlse.irap.fieldLine.Cube;
import java.util.Date;
import java.util.List;

import fr.tlse.irap.fieldLine.Footpoint;
import fr.tlse.irap.fieldLine.Footpoints;
import fr.tlse.irap.fit.Fit;
import fr.tlse.irap.flare.Flare;
import fr.tlse.irap.flare.FlareFlux;
import fr.tlse.irap.map.CarringtonMapType;
import fr.tlse.irap.map.HCSLine;
import fr.tlse.irap.shock.Shock;
import fr.tlse.irap.shock.Shockwave3dEvent;
import fr.tlse.irap.shock.Shockwave3dEvents;
import fr.tlse.irap.tool.corotation.CirCorotation;
import fr.tlse.irap.tool.radial.CMEType;
import fr.tlse.irap.tool.radial.CmeRadial;
import fr.tlse.irap.tool.sep.Sep.Particle;
import fr.tlse.irap.vplot.DateRange;
import fr.tlse.irap.vplot.SolarSpeed;
import java.io.IOException;
import java.net.MalformedURLException;

public interface IAsciiDAO {

        int loadSolarSpeedsSampling(String startName);
	List<SolarSpeed> loadSolarSpeeds(Date t1, Date t2, String startName);
	List<Object> loadSEPFlux(Date t1, Date t2, String startName, Particle particle);
	List<Flare> loadFlares(Date t1, Date t2);
	List<Shock> loadShocks(Date t1, Date t2);
	Shockwave3dEvent loadShockwave3d(Date t1);
	Shockwave3dEvents loadShockwaves3dList();
	List<Fit> loadFitsCME(Date t1, Date t2, CMEType cmeType, String sourceName);
	List<Fit> loadFitsCIR(Date t1, Date t2, String sourceName);
	List<DateRange> loadDateRanges(Date t1, Date t2, String catalog, String startName, String catType);
        List<CmeRadial> loadRadialCMEs(Date t1, Date t2, int elementId, CMEType cmeType, String observer, double extent);
	List<CirCorotation> loadCorotationCIRs(Date t1, Date t2, int elementId, String observer, double spread);
	List<CarringtonMapType> loadCarringtonMapTypes();
	List<FlareFlux> loadFlareFlux(Date t1, Date t2, String fluxType, String measure);
	List<Footpoint> loadEndFieldLineFP(Footpoints startFieldLineFP, Date time, String model, String source);
        Cube loadPFSSCube(Date time, String model, String source);
	List<Flare> loadLinkcatFlares(Date t1, Date t2, CMEType cmeType, String observatory);
	List<Fit> loadLinkcatFitsCME(Date t1, Date t2, CMEType cmeType, String sourceName);
	List<CmeRadial> loadLinkcatCMEs(Date t1, Date t2, CMEType cmeType, String observer, double extent);
        HCSLine loadHCSLine(Date time)  throws IOException, MalformedURLException;
}
