import java.util.ArrayList;
import java.lang.StringBuffer;
/**
* Filmobjekt
*
* @Mathisen
* @1.2 09.10.2006
*/
public class Film
{
// Filminformasjon
private String tittel;
private int år;
private int pris;
private ArrayList skuespillerliste;
/**
* Konstruktør.
*
* @param tittel Filmtittel
* @param år Produksjonsår
* @param pris Utleiepris
* @param skuespillere Semikolonskilt liste over skuespillere
*/
public Film(String tittel, int år, int pris, String skuespillere)
{
this.tittel = tittel;
this.år = år;
this.pris = pris;
skuespillerliste = new ArrayList();
if (skuespillere != "")
{
legg_til_skuespillere(skuespillere);
}
}
/**
* Metode for å endre filmdetaljer.
*
* NB! ALL INFORMASJON OM FILMEN ALLEREDE I DATABASEN BLIR OVERSKREVET,
* SÅ FREMT DU IKKE TAR HENSYN TIL VALG AV PARAMETRE:
*
* For ingen endring, bruk:
* "ingen endring" for detaljene 'tittel' og 'skuespillere'
* -1 for detaljene 'år' og 'pris'
*
* For å legge til nye skuespillere bruk egen metode legg_til_skuespillere()
*
*
* @param tittel Filmtittel
* @param år Produksjonsår
* @param pris Utleiepris
* @param skuespillere Semikolonskilt liste over skuespillere
*/
public void endre_detaljer(String tittel, int år, int pris, String skuespillere)
{
// endre tittelen
if (tittel != "ingen endring")
{
this.tittel = tittel;
}
// endre produksjonsår kun hvis år er større enn 0
if (år > -1)
{
this.år = år;
}
// endre pris kun hvis pris er større enn -1
if (pris > -1)
{
this.pris = pris;
}
// endre skuespillerliste
if (skuespillere != "ingen endring")
{
// tøm skuespillerliste og legg til nye
skuespillerliste.clear();
legg_til_skuespillere(skuespillere);
}
}
/**
* Metode for utskrift av detaljer.
*/
public void utskrift()
{
System.out.print("*** LEIEFILM ***\nTittel: " + this.tittel
+ "\nProduksjonsår: " + this.år
+ "\nUtleiepris: " + this.pris + "kr.\n"
+ "\nSkuespillere:\n");
// skriv ut alle skuespillere
for (int i = 0; i < skuespillerliste.size(); i++)
{
String dings = (String) skuespillerliste.get(i);
System.out.println(dings);
}
System.out.print("****************\n");
}
/**
* Metode for å returnere filmtittel.
*
* @return Filmtittel
*/
public String tittel()
{
return this.tittel;
}
/**
* Metode for å legge til skuespillere på en film.
*
* @param s_skuespillere Semikolonskilt liste over skuespillere
*/
public void legg_til_skuespillere(String s_skuespillere)
{
StringBuffer buffer = new StringBuffer(s_skuespillere.length());
StringBuffer skuespillere = new StringBuffer(s_skuespillere);
// legg til et semikolon til slutt, i tilfelle det mangler.
// koden legger uansett ikke til tomme skuespillernavn hvis vi ender opp med ;; på slutten
skuespillere.append(";");
for (int teller = 0; teller < skuespillere.length(); teller++)
{
if (skuespillere.charAt(teller) == ';')
{
// ny skuespiller
if (buffer.length() != 0)
{
// legg til i database
// tøm buffer
String dings = buffer.toString();
skuespillerliste.add(dings);
buffer = new StringBuffer(s_skuespillere.length());
}
}
else
{
// legg til tegn i buffer
buffer.append(skuespillere.charAt(teller));
}
}
}
/**
* Metode for å søke etter skuespiller i skuespillerlisten.
*
* @param skuespillernavn Navnet på skuespilleren
* @return Sant om skuespilleren finnes i skuespillerlisten, usant hvis ikke.
*/
public boolean finn_skuespiller(String skuespillernavn)
{
for (int i = 0; i < skuespillerliste.size(); i++)
{
String prima_bacon = (String) skuespillerliste.get(i);
if (skuespillernavn.equals(prima_bacon))
{
return true;
}
}
return false;
}
}