package de.htwdd.classes;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import de.htwdd.types.Medium;
public class Library
{
public ArrayList<Medium> search(String term, int Page)
{
ArrayList<Medium> arrayList = new ArrayList<Medium>();
HTTPDownloader downloader = new HTTPDownloader("https://katalog.bib.htw-dresden.de/Search/Results?lookfor="+term+"&type=AllFields&view=rss&page="+Page);
String result = downloader.getString();
if (downloader.ResponseCode != 200)
return null;
Pattern item = Pattern.compile("<item>.*?Record/(\\d*)</link>.*?<title>(.*?)/?</title>.*?</item>");
Matcher matcher = item.matcher(result);
while (matcher.find())
{
Medium medium = new Medium();
medium.ID = matcher.group(1);
medium.Title= matcher.group(2);
arrayList.add(medium);
}
return arrayList;
}
static public Medium getMedium(String ID)
{
Medium medium = new Medium();
// Lade Mediendetails über Export-Schnittstelle
HTTPDownloader downloader = new HTTPDownloader("https://katalog.bib.htw-dresden.de/Record/"+ID+"/Export?style=EndNote");
String result = downloader.getString();
if (result==null)
return null;
// Teile String
String row[] = result.split("%");
Integer count = row.length;
for (int i=1; i<count;i++)
{
switch (((int) row[i].charAt(0)))
{
// %0 Art des Mediums
case 48:
medium.Medium = row[i].substring(2);
break;
// %A Author
case 65:
medium.Author = row[i].substring(2);
break;
// %L Signatur
case 76:
if (medium.Signatur == null)
medium.Signatur = row[i].substring(2);
else
medium.Signatur += ",\n"+row[i].substring(2);
break;
// %T Titel des Mediums
case 84:
medium.Title = row[i].substring(2);
break;
// %Z Link zum Eintrag
case 90:
medium.Link = row[i].substring(2);
break;
}
}
// Lade Verfügbarkeit
downloader = new HTTPDownloader("https://katalog.bib.htw-dresden.de/AJAX/JSON?method=getItemStatuses&id[]="+ID);
result = downloader.getString();
if (result==null)
return medium;
try
{
// Wandle result in ein JSON-Objekt um
JSONObject data = new JSONObject(result);
// Wandle das Feld data in ein JSON-Array
JSONArray array = data.getJSONArray("data");
// Vom Array das erste Objekt holen
JSONObject data2= array.getJSONObject(0);
// Verfügbarkeit zum Medium hinzufügen
medium.Availability = data2.getString("availability_message");
}
catch (Exception e)
{
return medium;
}
return medium;
}
}