/***
 * File neve: csucs.java
 * Szerző: Szatmáry Botond
 * Utolsó módosítás: 1998. jun. 15.
 * Leírás: Ez az file a csúcs osztályt valósítja meg. Egy gráfbeli csúcs
 * reprezentálására szolgál.
 ***/

import java.util.*;

public class csucs
{
  static int valotlan=-78;
  lista elozo,kovetkezo;

  /**
   * azonosító az egyértelmű kell legyen
   * az alapján lehet keresni ...
   */
  String neve, azonosito;

  /**
   * csoport azonosító
   */
  String csoport;

  /**
   * koordináták, ahol a csúcs elhelyezkedik
   */
  int x, y;

  /**
   * magassag, szelesseg
   */
  int dx,dy;

  /**
   * hányadik emeleten helyezkedik el a csúcs
   */
  int emelet;

  /**
   * törölt-e vagy sem
   */
  boolean torolt;

  /**
   * Időintervallum. tól, ig. Használhatósagi intervallumot határoz meg.
   */
  String tol, ig;

  /**
   * A csúcsot éppen mozgatjak-e vagy sem
   */
  boolean select;

  /**
   * Történettömb, tárolja, hogy kik, mikor mentek át rajta.
   */
  Vector tortenet;

  // legrövidebb út meghatározásához
  int d; // ez az út költségét tartalmazza
  csucs pi; // legrövidebb útban az ősét mutatja

  /**
   * Konsturktor. Ezzel mar megkapja a tulajdonságait is.
   */
  public csucs( String neve, String azonosito, String csoport, int x, int y, int emelet, String tol, String ig )
  {
    elozo=new lista(30);
    kovetkezo=new lista(30);
    tortenet=new Vector(30);
    set(neve,azonosito,csoport,x,y,emelet,tol,ig);
    torolt=false;
  }
  /**
   * Konsturktor ...
   */
  public csucs( String azonosito )
  {
    elozo=new lista(30);
    kovetkezo=new lista(30);
    tortenet=new Vector(30);
    set(azonosito,azonosito,"",valotlan,valotlan,valotlan,"0:00","23:59");
    torolt=false;
  }

  /**
   * Beállítja a csúcs tulajdonságait.
   */
  public void set( String neve, String azonosito, String csoport, int x, int y, int emelet )
  {
    this.neve=neve;
    this.azonosito=azonosito;
    this.csoport=csoport;
    this.x=x;
    this.y=y;
    this.emelet=emelet;
    this.torolt=false;
    this.select=false;  // Misi belenyult
    this.dx=neve.length()*6+10; // Misi belenyult
    this.dy=17;  // Misi belenyult
  }

  /**
   * Beállitja a csúcs tulajdonságait, de itt már időt is lehet állitani.
   */
  public void set( String neve, String azonosito, String csoport, int x, int y, int emelet, String tol, String ig )
  {
    set(neve,azonosito,csoport,x,y,emelet);
    this.tol=tol;
    this.ig=ig;
  }
  /**
   * Beállítja az útkereseshez kellő adatokat.
   */
  public void utinit()
  {
    d=100000; // ez felső korlát akar lenni
    pi=null;
  }

  /**
  * Kiírja a csúcs tulajdonságait.
  */
  public void kiir()
  {
    //System.out.println(neve+"#"+azonosito+"#"+x+"#"+y+"#"+emelet+"#"+torolt);  // Misi belenyult
  }

  /**
   * Megadja, hogy az adott csúcs helyesen fel van-e töltve.
   */
  public boolean helyes()
  {
    return( x!=valotlan || y!=valotlan || emelet!=valotlan || csoport.equals("") );
  }

  /**
   * Összefűzi a kövekezö vektort egy String-be
   */
  public String kovetkezok()
    {
      String s=new String();
      csucs n;
      for ( Enumeration e=kovetkezo.elements(); e.hasMoreElements(); )
	{
	  n=(csucs)e.nextElement();
	  if (e.hasMoreElements()) 
	    s=s.concat(n.azonosito+",");
	  else 
	    s=s.concat(n.azonosito);
	}
      return s;
    }
}
