Java- Object-Oriented and Concurrent Programming
SeaPorts/.classpath
SeaPorts/.project
SeaPorts org.eclipse.jdt.core.javabuilder org.eclipse.jdt.core.javanature
SeaPorts/.settings/org.eclipse.jdt.core.prefs
eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.8
SeaPorts/bin/edu/umuc/cmsc335/beans/CargoShip.class
package edu.umuc.cmsc335.beans; public synchronized class CargoShip extends Ship { private double cargoValue; private double cargoVolume; private double cargoWeight; public void CargoShip(java.util.Scanner); public String toString(); }
SeaPorts/bin/edu/umuc/cmsc335/beans/Dock.class
package edu.umuc.cmsc335.beans; public synchronized class Dock extends Thing { protected Ship ship; public void Dock(java.util.Scanner); public String toString(); }
SeaPorts/bin/edu/umuc/cmsc335/beans/Job.class
package edu.umuc.cmsc335.beans; public synchronized class Job extends Thing { private double duration; protected java.util.ArrayList requirements; public void Job(java.util.Scanner); public String toString(); }
SeaPorts/bin/edu/umuc/cmsc335/beans/PassengerShip.class
package edu.umuc.cmsc335.beans; public synchronized class PassengerShip extends Ship { private int numberOfOccupiedRooms; private int numberOfPassengers; private int numberOfRooms; public void PassengerShip(java.util.Scanner); public String toString(); }
SeaPorts/bin/edu/umuc/cmsc335/beans/Person.class
package edu.umuc.cmsc335.beans; public synchronized class Person extends Thing { protected String skill; public void Person(java.util.Scanner); public String toString(); }
SeaPorts/bin/edu/umuc/cmsc335/beans/PortTime.class
package edu.umuc.cmsc335.beans; public synchronized class PortTime { private int time; public void PortTime(); public String toString(); }
SeaPorts/bin/edu/umuc/cmsc335/beans/SeaPort.class
package edu.umuc.cmsc335.beans; public synchronized class SeaPort extends Thing { protected java.util.ArrayList docks; protected java.util.ArrayList queue; protected java.util.ArrayList ships; protected java.util.ArrayList persons; public void SeaPort(java.util.Scanner); public String toString(); }
SeaPorts/bin/edu/umuc/cmsc335/beans/Ship.class
package edu.umuc.cmsc335.beans; public synchronized class Ship extends Thing { private PortTime arrivalTime; private PortTime dockTime; private double draft; private double length; private double weight; private double width; protected java.util.ArrayList jobs; public void Ship(java.util.Scanner); public String toString(); public double getDraft(); public double getLength(); public double getWeight(); public double getWidth(); }
SeaPorts/bin/edu/umuc/cmsc335/beans/Thing.class
package edu.umuc.cmsc335.beans; public synchronized class Thing implements Comparable { protected int index; protected String name; protected int parent; public void Thing(java.util.Scanner); public void Thing(String, int, int); public int compareTo(Thing); public String toString(); public String getName(); }
SeaPorts/bin/edu/umuc/cmsc335/beans/World.class
package edu.umuc.cmsc335.beans; public synchronized class World extends Thing { private java.util.ArrayList ports; private PortTime time; private java.util.HashMap hms; public void World(java.util.Scanner); public void World(String, int, int); public String toString(); public String searchByName(String); private String className(Thing); public String searchByIndex(String); public String searchBySkill(String); public void process(String); private Job getJobByIndex(int); private Person getPersonByIndex(int); private Ship getShipByIndex(int); private Dock getDockByIndex(int); public SeaPort getSeaPortByIndex(int); private void addJob(java.util.Scanner); private void addPerson(java.util.Scanner); private void addCargoShip(java.util.Scanner); private void addPassengerShip(java.util.Scanner); private void addDock(java.util.Scanner); private void addPort(java.util.Scanner); public void sortByName(); public void sortShipsByWeight(); public void sortShipsByLength(); public void sortShipsByWidth(); public void sortShipsByDraft(); }
SeaPorts/bin/edu/umuc/cmsc335/comparator/ShipDraftComparator.class
package edu.umuc.cmsc335.comparator; public synchronized class ShipDraftComparator implements java.util.Comparator { public void ShipDraftComparator(); public int compare(edu.umuc.cmsc335.beans.Ship, edu.umuc.cmsc335.beans.Ship); }
SeaPorts/bin/edu/umuc/cmsc335/comparator/ShipLengthComparator.class
package edu.umuc.cmsc335.comparator; public synchronized class ShipLengthComparator implements java.util.Comparator { public void ShipLengthComparator(); public int compare(edu.umuc.cmsc335.beans.Ship, edu.umuc.cmsc335.beans.Ship); }
SeaPorts/bin/edu/umuc/cmsc335/comparator/ShipWeightComparator.class
package edu.umuc.cmsc335.comparator; public synchronized class ShipWeightComparator implements java.util.Comparator { public void ShipWeightComparator(); public int compare(edu.umuc.cmsc335.beans.Ship, edu.umuc.cmsc335.beans.Ship); }
SeaPorts/bin/edu/umuc/cmsc335/comparator/ShipWidthComparator.class
package edu.umuc.cmsc335.comparator; public synchronized class ShipWidthComparator implements java.util.Comparator { public void ShipWidthComparator(); public int compare(edu.umuc.cmsc335.beans.Ship, edu.umuc.cmsc335.beans.Ship); }
SeaPorts/bin/edu/umuc/cmsc335/comparator/ThingNameComparator.class
package edu.umuc.cmsc335.comparator; public synchronized class ThingNameComparator implements java.util.Comparator { public void ThingNameComparator(); public int compare(edu.umuc.cmsc335.beans.Thing, edu.umuc.cmsc335.beans.Thing); }
SeaPorts/bin/edu/umuc/cmsc335/ui/SeaPortListener.class
package edu.umuc.cmsc335.ui; public synchronized class SeaPortListener implements java.awt.event.ActionListener { static SeaPortProgram seaPortProgram; static void <clinit>(); public void SeaPortListener(SeaPortProgram); public void actionPerformed(java.awt.event.ActionEvent); private void sortActionPerformed(java.awt.event.ActionEvent); private void openFileActionPerformed(java.awt.event.ActionEvent); private void searchActionPerformed(java.awt.event.ActionEvent); }
SeaPorts/bin/edu/umuc/cmsc335/ui/SeaPortProgram.class
package edu.umuc.cmsc335.ui; public synchronized class SeaPortProgram extends javax.swing.JFrame { public edu.umuc.cmsc335.beans.World world; private static final String TITLE = Sea Port Program; public static final String OPEN_FILE = Open File; public static final String SEARCH = Search; public static final String SORT = Sort; public static final String[] SORT_OPTION; javax.swing.JButton openFileButton; javax.swing.JButton searchButton; javax.swing.ButtonGroup group; javax.swing.JRadioButton rbName; javax.swing.JRadioButton rbIndex; javax.swing.JRadioButton rbSkill; javax.swing.JTextArea outPutArea; javax.swing.JScrollPane scrollPane; javax.swing.JPanel buttonsPanel; javax.swing.JPanel comboButtonPanel; javax.swing.JTextField searchField; javax.swing.JComboBox sortComboBox; static void <clinit>(); public void SeaPortProgram(); public javax.swing.JTextArea getOutPutArea(); private javax.swing.JScrollPane getScrollPane(javax.swing.JTextArea); private javax.swing.JTextField getSearchField(); private javax.swing.JPanel getComboButtonPanel(); private javax.swing.JPanel getButtonspanel(); private javax.swing.JButton getSearchButton(); private javax.swing.JButton getOpenFileButton(); public javax.swing.JComboBox getSortComboBox(); public static void main(String[]); }
SeaPorts/src/edu/umuc/cmsc335/beans/CargoShip.java
SeaPorts/src/edu/umuc/cmsc335/beans/CargoShip.java
package
edu
.
umuc
.
cmsc335
.
beans
;
import
java
.
util
.
Scanner
;
public
class
CargoShip
extends
Ship
{
private
double
cargoValue
;
private
double
cargoVolume
;
private
double
cargoWeight
;
public
CargoShip
(
Scanner
sc
){
super
(
sc
);
if
(
sc
.
hasNextDouble
()){
cargoWeight
=
sc
.
nextDouble
();
}
if
(
sc
.
hasNextDouble
()){
cargoVolume
=
sc
.
nextDouble
();
}
if
(
sc
.
hasNextDouble
()){
cargoValue
=
sc
.
nextDouble
();
}
}
@
Override
public
String
toString
()
{
return
" Ship: Cargo Ship: "
+
super
.
toString
();
}
}
SeaPorts/src/edu/umuc/cmsc335/beans/Dock.java
SeaPorts/src/edu/umuc/cmsc335/beans/Dock.java
package
edu
.
umuc
.
cmsc335
.
beans
;
import
java
.
util
.
Scanner
;
public
class
Dock
extends
Thing
{
public
Dock
(
Scanner
sc
)
{
super
(
sc
);
}
protected
Ship
ship
;
@
Override
public
String
toString
()
{
return
" Dock: "
+
name
+
" "
+
index
+
"\n"
+
ship
.
toString
();
}
}
SeaPorts/src/edu/umuc/cmsc335/beans/Job.java
SeaPorts/src/edu/umuc/cmsc335/beans/Job.java
package
edu
.
umuc
.
cmsc335
.
beans
;
import
java
.
util
.
ArrayList
;
import
java
.
util
.
Scanner
;
public
class
Job
extends
Thing
{
private
double
duration
;
protected
ArrayList
<
String
>
requirements
;
// should be some of the skills of the persons
public
Job
(
Scanner
sc
)
{
super
(
sc
);
if
(
sc
.
hasNextDouble
()){
duration
=
sc
.
nextDouble
();
}
if
(
sc
.
hasNext
()){
requirements
=
new
ArrayList
<
String
>
();
while
(
sc
.
hasNext
()){
this
.
requirements
.
add
(
sc
.
next
());
}
}
}
@
Override
public
String
toString
()
{
// If the requirements aren't there don't try to output them
if
(
requirements
==
null
){
return
name
+
" "
+
index
+
" "
;
}
// Return requirements as well.
return
name
+
" "
+
index
+
" "
+
"Requirements: "
+
requirements
.
toString
()
;
}
}
SeaPorts/src/edu/umuc/cmsc335/beans/PassengerShip.java
SeaPorts/src/edu/umuc/cmsc335/beans/PassengerShip.java
package
edu
.
umuc
.
cmsc335
.
beans
;
import
java
.
util
.
Scanner
;
public
class
PassengerShip
extends
Ship
{
private
int
numberOfOccupiedRooms
;
private
int
numberOfPassengers
;
private
int
numberOfRooms
;
public
PassengerShip
(
Scanner
sc
)
{
super
(
sc
);
if
(
sc
.
hasNextInt
()){
numberOfPassengers
=
sc
.
nextInt
();
}
if
(
sc
.
hasNextInt
()){
numberOfRooms
=
sc
.
nextInt
();
}
if
(
sc
.
hasNextInt
()){
numberOfOccupiedRooms
=
sc
.
nextInt
();
}
}
@
Override
public
String
toString
()
{
String
st
=
" Ship: Passenger ship: "
+
super
.
toString
();
if
(
jobs
.
size
()
==
0
)
return
st
;
for
(
Job
mj
:
jobs
)
st
+=
"\n - "
+
mj
;
return
st
;
}
}
SeaPorts/src/edu/umuc/cmsc335/beans/Person.java
SeaPorts/src/edu/umuc/cmsc335/beans/Person.java
package
edu
.
umuc
.
cmsc335
.
beans
;
import
java
.
util
.
Scanner
;
public
class
Person
extends
Thing
{
protected
String
skill
;
public
Person
(
Scanner
sc
)
{
super
(
sc
);
if
(
sc
.
hasNext
()){
this
.
skill
=
sc
.
next
();
}
}
@
Override
public
String
toString
()
{
return
"Person: "
+
super
.
toString
()
+
" "
+
skill
;
}
}
SeaPorts/src/edu/umuc/cmsc335/beans/PortTime.java
SeaPorts/src/edu/umuc/cmsc335/beans/PortTime.java
package
edu
.
umuc
.
cmsc335
.
beans
;
public
class
PortTime
{
private
int
time
;
@
Override
public
String
toString
()
{
return
"Port Time is: "
+
time
;
}
}
SeaPorts/src/edu/umuc/cmsc335/beans/SeaPort.java
SeaPorts/src/edu/umuc/cmsc335/beans/SeaPort.java
package
edu
.
umuc
.
cmsc335
.
beans
;
import
java
.
util
.
ArrayList
;
import
java
.
util
.
Scanner
;
public
class
SeaPort
extends
Thing
{
protected
ArrayList
<
Dock
>
docks
;
protected
ArrayList
<
Ship
>
queue
;
// the list of ships waiting to dock
protected
ArrayList
<
Ship
>
ships
;
// a list of all the ships at this port
protected
ArrayList
<
Person
>
persons
;
// people with skills at this port
public
SeaPort
(
Scanner
sc
){
super
(
sc
);
docks
=
new
ArrayList
<
Dock
>
();
queue
=
new
ArrayList
<
Ship
>
();
ships
=
new
ArrayList
<
Ship
>
();
persons
=
new
ArrayList
<
Person
>
();
}
@
Override
public
String
toString
()
{
String
st
=
"\n\nSeaPort: "
+
super
.
toString
();
for
(
Dock
md
:
docks
)
st
+=
"\n"
+
md
;
st
+=
"\n\n --- List of all ships in queue:"
;
for
(
Ship
ms
:
queue
)
st
+=
"\n > "
+
ms
;
st
+=
"\n\n --- List of all ships:"
;
for
(
Ship
ms
:
ships
)
st
+=
"\n > "
+
ms
;
st
+=
"\n\n --- List of all persons:"
;
for
(
Person
mp
:
persons
)
st
+=
"\n > "
+
mp
;
return
st
;
}
}
SeaPorts/src/edu/umuc/cmsc335/beans/Ship.java
SeaPorts/src/edu/umuc/cmsc335/beans/Ship.java
package
edu
.
umuc
.
cmsc335
.
beans
;
import
java
.
util
.
ArrayList
;
import
java
.
util
.
Scanner
;
public
class
Ship
extends
Thing
{
private
PortTime
arrivalTime
;
private
PortTime
dockTime
;
private
double
draft
;
private
double
length
;
private
double
weight
;
private
double
width
;
protected
ArrayList
<
Job
>
jobs
;
public
Ship
(
Scanner
sc
){
super
(
sc
);
if
(
sc
.
hasNextDouble
()){
weight
=
sc
.
nextDouble
();
}
if
(
sc
.
hasNextDouble
()){
length
=
sc
.
nextDouble
();
}
if
(
sc
.
hasNextDouble
()){
width
=
sc
.
nextDouble
();
}
if
(
sc
.
hasNextDouble
()){
draft
=
sc
.
nextDouble
();
}
jobs
=
new
ArrayList
<
Job
>
();
}
@
Override
public
String
toString
()
{
return
"\t"
+
name
+
" "
+
index
+
"\t"
+
"Weight: "
+
weight
+
"\t"
+
"length: "
+
length
+
"\t"
+
"width: "
+
width
+
"\t"
+
"draft: "
+
draft
;
// TODO Print out all jobs?
/* String st = "\n\nSeaPort: " + super.toString();
for (Dock md: docks) st += "\n" + md;
st += "\n\n --- List of all ships in queue:";
for (Ship ms: queue ) st += "\n > " + ms;
st += "\n\n --- List of all ships:";
for (Ship ms: ships) st += "\n > " + ms;
st += "\n\n --- List of all persons:";
for (Person mp: persons) st += "\n > " + mp;
return st; */
}
public
double
getDraft
()
{
return
draft
;
}
public
double
getLength
()
{
return
length
;
}
public
double
getWeight
()
{
return
weight
;
}
public
double
getWidth
()
{
return
width
;
}
}
SeaPorts/src/edu/umuc/cmsc335/beans/Thing.java
SeaPorts/src/edu/umuc/cmsc335/beans/Thing.java
package
edu
.
umuc
.
cmsc335
.
beans
;
import
java
.
util
.
Scanner
;
public
class
Thing
implements
Comparable
<
Thing
>
{
protected
int
index
;
protected
String
name
;
protected
int
parent
;
public
Thing
(
Scanner
sc
)
{
if
(
sc
.
hasNext
()){
this
.
name
=
sc
.
next
();
}
if
(
sc
.
hasNextInt
()){
this
.
index
=
sc
.
nextInt
();
}
if
(
sc
.
hasNextInt
()){
this
.
parent
=
sc
.
nextInt
();
}
}
public
Thing
(
String
name
,
int
index
,
int
parent
)
{
this
.
name
=
name
;
this
.
index
=
index
;
this
.
parent
=
parent
;
}
@
Override
public
int
compareTo
(
Thing
arg0
)
{
// TODO Auto-generated method stub
return
0
;
}
/* public int compareTo(Thing t) {
int lastCmp = name.compareTo(n.name);
return (lastCmp != 0 ? lastCmp : firstName.compareTo(n.firstName));
}*/
@
Override
public
String
toString
()
{
return
name
+
" "
+
index
;
}
public
String
getName
()
{
return
name
;
}
}
SeaPorts/src/edu/umuc/cmsc335/beans/World.java
SeaPorts/src/edu/umuc/cmsc335/beans/World.java
package
edu
.
umuc
.
cmsc335
.
beans
;
import
java
.
util
.
ArrayList
;
import
java
.
util
.
Collections
;
import
java
.
util
.
HashMap
;
import
java
.
util
.
Scanner
;
import
edu
.
umuc
.
cmsc335
.
comparator
.
ShipDraftComparator
;
import
edu
.
umuc
.
cmsc335
.
comparator
.
ShipLengthComparator
;
import
edu
.
umuc
.
cmsc335
.
comparator
.
ShipWeightComparator
;
import
edu
.
umuc
.
cmsc335
.
comparator
.
ShipWidthComparator
;
import
edu
.
umuc
.
cmsc335
.
comparator
.
ThingNameComparator
;
public
class
World
extends
Thing
{
private
ArrayList
<
SeaPort
>
ports
;
private
PortTime
time
;
private
HashMap
<
Integer
,
Thing
>
hms
;
public
World
(
Scanner
sc
)
{
super
(
sc
);
}
public
World
(
String
name
,
int
index
,
int
parent
){
super
(
name
,
index
,
parent
);
ports
=
new
ArrayList
<>
();
time
=
new
PortTime
();
hms
=
new
HashMap
<
Integer
,
Thing
>
();
hms
.
put
(
this
.
index
,
this
);
}
@
Override
public
String
toString
()
{
return
ports
.
toString
();
}
public
String
searchByName
(
String
search
)
{
String
results
=
""
;
if
(
this
.
name
.
toLowerCase
().
equals
(
search
))
results
+=
className
(
this
);
for
(
SeaPort
port
:
ports
){
if
(
port
.
name
.
toLowerCase
().
equals
(
search
))
results
+=
className
(
port
);
for
(
Dock
dock
:
port
.
docks
){
if
(
dock
.
name
.
toLowerCase
().
equals
(
search
))
results
+=
className
(
dock
);
}
for
(
Person
person
:
port
.
persons
){
if
(
person
.
name
.
toLowerCase
().
equals
(
search
))
results
+=
className
(
person
);
}
for
(
Ship
ship
:
port
.
ships
){
if
(
ship
.
name
.
toLowerCase
().
equals
(
search
))
results
+=
className
(
ship
);
for
(
Job
job
:
ship
.
jobs
){
if
(
job
.
name
.
toLowerCase
().
equals
(
search
))
results
+=
className
(
job
);
}
}
}
if
(
results
.
isEmpty
())
results
=
"No results found."
;
return
results
;
}
private
String
className
(
Thing
thing
)
{
// Helper method for searchByName()
return
thing
.
getClass
().
getName
().
substring
(
thing
.
getClass
().
getName
().
lastIndexOf
(
'.'
)
+
1
)
+
": "
+
thing
.
name
+
"\n"
;
}
public
String
searchByIndex
(
String
search
)
{
String
results
=
"No results found."
;
Thing
thing
;
try
{
int
sIndex
=
Integer
.
parseInt
(
search
);
thing
=
hms
.
get
(
sIndex
);
if
(
thing
!=
null
){
results
=
className
(
thing
);
}
}
catch
(
NumberFormatException
e
)
{
results
=
"Search by index must be an integer"
;
}
return
results
;
}
public
String
searchBySkill
(
String
search
)
{
String
results
=
""
;
for
(
SeaPort
port
:
ports
){
for
(
Person
person
:
port
.
persons
){
if
(
person
.
skill
.
toLowerCase
().
equals
(
search
))
results
+=
className
(
person
);
}
for
(
Ship
ship
:
port
.
ships
){
for
(
Job
job
:
ship
.
jobs
){
if
(
job
.
toString
().
toLowerCase
().
contains
(
search
))
results
+=
className
(
job
);
}
}
}
if
(
results
.
isEmpty
())
results
=
"No results found."
;
return
results
;
}
public
void
process
(
String
st
)
{
System
.
out
.
println
(
"Processing >"
+
st
+
"<"
);
Scanner
sc
=
new
Scanner
(
st
);
if
(
!
sc
.
hasNext
())
{
sc
.
close
();
return
;
}
switch
(
sc
.
next
())
{
case
"port"
:
addPort
(
sc
);
break
;
case
"dock"
:
addDock
(
sc
);
break
;
case
"pship"
:
addPassengerShip
(
sc
);
break
;
case
"cship"
:
addCargoShip
(
sc
);
break
;
case
"person"
:
addPerson
(
sc
);
break
;
case
"job"
:
addJob
(
sc
);
break
;
}
}
private
Job
getJobByIndex
(
int
parent
)
{
for
(
SeaPort
port
:
ports
){
for
(
Ship
ship
:
port
.
ships
){
for
(
Job
job
:
ship
.
jobs
){
if
(
job
.
index
==
parent
){
return
job
;
}
}
}
}
return
null
;
}
private
Person
getPersonByIndex
(
int
parent
)
{
for
(
SeaPort
port
:
ports
){
for
(
Person
person
:
port
.
persons
){
if
(
person
.
index
==
parent
){
return
person
;
}
}
}
return
null
;
}
private
Ship
getShipByIndex
(
int
parent
)
{
for
(
SeaPort
port
:
ports
){
for
(
Ship
ship
:
port
.
ships
){
if
(
ship
.
index
==
parent
){
return
ship
;
}
}
}
return
null
;
}
private
Dock
getDockByIndex
(
int
parent
)
{
for
(
SeaPort
port
:
ports
){
for
(
Dock
dock
:
port
.
docks
){
if
(
dock
.
index
==
parent
){
return
dock
;
}
}
}
return
null
;
}
public
SeaPort
getSeaPortByIndex
(
int
parent
)
{
for
(
SeaPort
port
:
ports
){
if
(
port
.
index
==
parent
){
return
port
;
}
}
return
null
;
}
private
void
addJob
(
Scanner
sc
)
{
Job
job
=
new
Job
(
sc
);
Dock
dock
=
getDockByIndex
(
job
.
parent
);
if
(
dock
!=
null
){
if
(
dock
.
ship
!=
null
)
{
dock
.
ship
.
jobs
.
add
(
job
);
hms
.
put
(
job
.
index
,
job
);
}
}
}
private
void
addPerson
(
Scanner
sc
)
{
Person
person
=
new
Person
(
sc
);
SeaPort
port
=
getSeaPortByIndex
(
person
.
parent
);
if
(
port
!=
null
){
port
.
persons
.
add
(
person
);
hms
.
put
(
person
.
index
,
person
);
}
}
private
void
addCargoShip
(
Scanner
sc
)
{
CargoShip
cShip
=
new
CargoShip
(
sc
);
Dock
dock
=
getDockByIndex
(
cShip
.
parent
);
if
(
dock
==
null
){
getSeaPortByIndex
(
cShip
.
parent
).
ships
.
add
(
cShip
);
getSeaPortByIndex
(
cShip
.
parent
).
queue
.
add
(
cShip
);
return
;
}
dock
.
ship
=
cShip
;
getSeaPortByIndex
(
dock
.
parent
).
ships
.
add
(
cShip
);
hms
.
put
(
cShip
.
index
,
cShip
);
}
private
void
addPassengerShip
(
Scanner
sc
)
{
PassengerShip
pShip
=
new
PassengerShip
(
sc
);
Dock
dock
=
getDockByIndex
(
pShip
.
parent
);
if
(
dock
==
null
){
getSeaPortByIndex
(
pShip
.
parent
).
ships
.
add
(
pShip
);