lab6
This commit is contained in:
parent
7fb34d7482
commit
a7d0e609db
@ -10,7 +10,7 @@ public class DrawingShip {
|
|||||||
public EntityShip getEntityShip(){
|
public EntityShip getEntityShip(){
|
||||||
return entityShip;
|
return entityShip;
|
||||||
}
|
}
|
||||||
private IDrawBlocks drawingBlocks;
|
public IDrawBlocks drawingBlocks;
|
||||||
public void setDrawingBlocks(IDrawBlocks blocks){
|
public void setDrawingBlocks(IDrawBlocks blocks){
|
||||||
drawingBlocks = blocks;
|
drawingBlocks = blocks;
|
||||||
}
|
}
|
||||||
|
80
src/drawing_objects/ExtensionDrawingShip.java
Normal file
80
src/drawing_objects/ExtensionDrawingShip.java
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
package drawing_objects;
|
||||||
|
|
||||||
|
import entities.EntityBattleship;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class ExtensionDrawingShip {
|
||||||
|
private static String getColorName(Color col){
|
||||||
|
if(col.equals(Color.RED))
|
||||||
|
return "RED";
|
||||||
|
if(col.equals(Color.GREEN))
|
||||||
|
return "GREEN";
|
||||||
|
if(col.equals(Color.BLUE))
|
||||||
|
return "BLUE";
|
||||||
|
if(col.equals(Color.YELLOW))
|
||||||
|
return "YELLOW";
|
||||||
|
if(col.equals(Color.WHITE))
|
||||||
|
return "WHITE";
|
||||||
|
if(col.equals(Color.GRAY))
|
||||||
|
return "GRAY";
|
||||||
|
if(col.equals(Color.BLACK))
|
||||||
|
return "BLACK";
|
||||||
|
if(col.equals(Color.PINK))
|
||||||
|
return "PINK";
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Color getColor(String col){
|
||||||
|
if(col.equals("RED"))
|
||||||
|
return Color.RED;
|
||||||
|
if(col.equals("GREEN"))
|
||||||
|
return Color.GREEN;
|
||||||
|
if(col.equals("BLUE"))
|
||||||
|
return Color.BLUE;
|
||||||
|
if(col.equals("YELLOW"))
|
||||||
|
return Color.YELLOW;
|
||||||
|
if(col.equals("WHITE"))
|
||||||
|
return Color.WHITE;
|
||||||
|
if(col.equals("GRAY"))
|
||||||
|
return Color.GRAY;
|
||||||
|
if(col.equals("BLACK"))
|
||||||
|
return Color.BLACK;
|
||||||
|
if(col.equals("MAGENTA"))
|
||||||
|
return Color.MAGENTA;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public static DrawingShip createDrawingShip(String info, char separatorForObject, int width, int height){
|
||||||
|
String[] strs = info.split(Character.toString(separatorForObject));
|
||||||
|
if(strs.length == 5){
|
||||||
|
return new DrawingShip(Integer.parseInt(strs[0]),
|
||||||
|
Integer.parseInt(strs[1]), getColor(strs[2]), width, height,
|
||||||
|
Integer.parseInt(strs[3]), Integer.parseInt(strs[4]));
|
||||||
|
}
|
||||||
|
if(strs.length == 8){
|
||||||
|
return new DrawingBattleship(Integer.parseInt(strs[0]),
|
||||||
|
Integer.parseInt(strs[1]), getColor(strs[2]), getColor(strs[5]),
|
||||||
|
Boolean.parseBoolean(strs[6]), Boolean.parseBoolean(strs[7]),
|
||||||
|
width, height, Integer.parseInt(strs[3]), Integer.parseInt(strs[4]));
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public static String getDataForSave(DrawingShip DrawingShip, char separatorForObject){
|
||||||
|
var ship = DrawingShip.getEntityShip();
|
||||||
|
if(ship == null)
|
||||||
|
return null;
|
||||||
|
var str = String.format("%d%c%d%c%s%c%d%c%d",
|
||||||
|
ship.getSpeed(), separatorForObject,
|
||||||
|
(int)ship.getWeight(), separatorForObject,
|
||||||
|
getColorName(ship.getBodyColor()), separatorForObject,
|
||||||
|
DrawingShip.drawingBlocks.getType(), separatorForObject,
|
||||||
|
DrawingShip.drawingBlocks.getNumber());
|
||||||
|
if(!(ship instanceof EntityBattleship)){
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
return String.format("%s%c%s%c%b%c%b%", str, separatorForObject,
|
||||||
|
getColorName(((EntityBattleship) ship).getAdditionalColor()), separatorForObject,
|
||||||
|
((EntityBattleship) ship).getTurret(), separatorForObject,
|
||||||
|
((EntityBattleship) ship).getRocketLauncher());
|
||||||
|
}
|
||||||
|
}
|
@ -2,7 +2,9 @@ package frames;
|
|||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.border.StrokeBorder;
|
import javax.swing.border.StrokeBorder;
|
||||||
|
import javax.swing.filechooser.FileFilter;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
@ -12,6 +14,20 @@ import drawing_objects.*;
|
|||||||
import generics.*;
|
import generics.*;
|
||||||
import movement_strategy.*;
|
import movement_strategy.*;
|
||||||
|
|
||||||
|
class TxtSaveFilter extends FileFilter {
|
||||||
|
@Override
|
||||||
|
public boolean accept(File f) {
|
||||||
|
if (f.isDirectory()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
String s = f.getName().toLowerCase();
|
||||||
|
return s.endsWith(".txt");
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public String getDescription() {
|
||||||
|
return "*.txt";
|
||||||
|
}
|
||||||
|
}
|
||||||
public class FrameShipsCollection extends JFrame {
|
public class FrameShipsCollection extends JFrame {
|
||||||
private final ShipsGenericStorage storage;
|
private final ShipsGenericStorage storage;
|
||||||
LinkedList<DrawingShip> trashCollection = new LinkedList<>();
|
LinkedList<DrawingShip> trashCollection = new LinkedList<>();
|
||||||
@ -43,6 +59,18 @@ public class FrameShipsCollection extends JFrame {
|
|||||||
super.repaint();
|
super.repaint();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
JMenuBar menuFile = new JMenuBar();
|
||||||
|
JMenu file = new JMenu("Файл");
|
||||||
|
menuFile.add(file);
|
||||||
|
JMenuItem saveFile = new JMenuItem("Сохранить");
|
||||||
|
JMenuItem loadFile = new JMenuItem("Загрузить");
|
||||||
|
JMenuItem saveSet = new JMenuItem("Сохранить коллекцию");
|
||||||
|
JMenuItem loadSet = new JMenuItem("Загрузить коллекцию");
|
||||||
|
file.add(saveSet);
|
||||||
|
file.add(loadSet);
|
||||||
|
file.add(saveFile);
|
||||||
|
file.add(loadFile);
|
||||||
|
setJMenuBar(menuFile);
|
||||||
pictureBoxCollection.setPreferredSize(new Dimension(700, 450));
|
pictureBoxCollection.setPreferredSize(new Dimension(700, 450));
|
||||||
JButton buttonAddShip = new JButton("Добавить корабль");
|
JButton buttonAddShip = new JButton("Добавить корабль");
|
||||||
textFieldNumber = new TextField();
|
textFieldNumber = new TextField();
|
||||||
@ -64,6 +92,10 @@ public class FrameShipsCollection extends JFrame {
|
|||||||
buttonRemoveShip.addActionListener(e -> buttonRemoveShipClick());
|
buttonRemoveShip.addActionListener(e -> buttonRemoveShipClick());
|
||||||
buttonRefreshCollection.addActionListener(e -> buttonRefreshCollectionClick());
|
buttonRefreshCollection.addActionListener(e -> buttonRefreshCollectionClick());
|
||||||
buttonTrash.addActionListener(e -> buttonTrashClick());
|
buttonTrash.addActionListener(e -> buttonTrashClick());
|
||||||
|
saveFile.addActionListener(e -> saveFile());
|
||||||
|
saveSet.addActionListener(e -> saveSet());
|
||||||
|
loadFile.addActionListener(e -> loadFile());
|
||||||
|
loadSet.addActionListener(e -> loadSet());
|
||||||
//panels and constraints initialisation
|
//panels and constraints initialisation
|
||||||
JPanel panelTools = new JPanel(new GridBagLayout());
|
JPanel panelTools = new JPanel(new GridBagLayout());
|
||||||
panelTools.setBorder(new StrokeBorder(new BasicStroke(3)));
|
panelTools.setBorder(new StrokeBorder(new BasicStroke(3)));
|
||||||
@ -140,7 +172,7 @@ public class FrameShipsCollection extends JFrame {
|
|||||||
private void buttonDeleteSet_Click() {
|
private void buttonDeleteSet_Click() {
|
||||||
if (listStorages.getSelectedIndex() == -1)
|
if (listStorages.getSelectedIndex() == -1)
|
||||||
return;
|
return;
|
||||||
storage.delSet(listStorages.getSelectedValue());
|
storage.delSet(listStorages.getSelectedValue(), trashCollection);
|
||||||
reloadObjects();
|
reloadObjects();
|
||||||
}
|
}
|
||||||
private void buttonAddShipClick() {
|
private void buttonAddShipClick() {
|
||||||
@ -194,4 +226,62 @@ public class FrameShipsCollection extends JFrame {
|
|||||||
}
|
}
|
||||||
frame.setShip(trashCollection.pop());
|
frame.setShip(trashCollection.pop());
|
||||||
}
|
}
|
||||||
|
private void saveFile(){
|
||||||
|
JFileChooser fc = new JFileChooser("C:\\Users\\user\\Documents");
|
||||||
|
fc.addChoosableFileFilter(new TxtSaveFilter());
|
||||||
|
int retrieval = fc.showSaveDialog(null);
|
||||||
|
if (retrieval == JFileChooser.APPROVE_OPTION) {
|
||||||
|
File file = new File(fc.getSelectedFile() + "." + "txt");
|
||||||
|
try {
|
||||||
|
storage.saveData(file);
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw new RuntimeException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void saveSet(){
|
||||||
|
JFileChooser fc = new JFileChooser("C:\\Users\\user\\Documents");
|
||||||
|
fc.addChoosableFileFilter(new TxtSaveFilter());
|
||||||
|
int retrieval = fc.showSaveDialog(null);
|
||||||
|
if (retrieval == JFileChooser.APPROVE_OPTION) {
|
||||||
|
File file = new File(fc.getSelectedFile() + "." + "txt");
|
||||||
|
try {
|
||||||
|
if(listStorages.getSelectedIndex() == -1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
storage.shipsStorages.get(listStorages.getSelectedValue()).saveData(file, listStorages.getSelectedValue());
|
||||||
|
reloadObjects();
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw new RuntimeException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void loadFile(){
|
||||||
|
JFileChooser fc = new JFileChooser("C:\\Users\\user\\Documents");
|
||||||
|
int ret = fc.showDialog(null, "Открыть файл");
|
||||||
|
if(ret == JFileChooser.APPROVE_OPTION){
|
||||||
|
File file = fc.getSelectedFile();
|
||||||
|
try {
|
||||||
|
storage.loadData(file);
|
||||||
|
reloadObjects();
|
||||||
|
pictureBoxCollection.repaint();
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw new RuntimeException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void loadSet(){
|
||||||
|
JFileChooser fc = new JFileChooser("C:\\Users\\user\\Documents");
|
||||||
|
int ret = fc.showDialog(null, "Открыть файл");
|
||||||
|
if(ret == JFileChooser.APPROVE_OPTION){
|
||||||
|
File file = fc.getSelectedFile();
|
||||||
|
try {
|
||||||
|
storage.loadCollection(file);
|
||||||
|
reloadObjects();
|
||||||
|
pictureBoxCollection.repaint();
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw new RuntimeException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
public class SetGeneric<T extends Object>{
|
public class SetGeneric<T extends Object>{
|
||||||
private final ArrayList<T> places;
|
private final ArrayList<T> places;
|
||||||
public int getCount() {return places.size();}
|
|
||||||
private final int maxCount;
|
private final int maxCount;
|
||||||
public SetGeneric(int count){
|
public SetGeneric(int count){
|
||||||
maxCount = count;
|
maxCount = count;
|
||||||
@ -27,9 +26,15 @@ public class SetGeneric<T extends Object>{
|
|||||||
places.remove(position);
|
places.remove(position);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
public int getCount() {
|
||||||
|
return places.size();
|
||||||
|
}
|
||||||
public T get(int position){
|
public T get(int position){
|
||||||
if(!(position >= 0 && position < places.size()))
|
if(!(position >= 0 && position < places.size()))
|
||||||
return null;
|
return null;
|
||||||
return places.get(position);
|
return places.get(position);
|
||||||
}
|
}
|
||||||
|
public ArrayList<T> getShips(){
|
||||||
|
return new ArrayList<>(places);
|
||||||
|
}
|
||||||
}
|
}
|
@ -4,16 +4,19 @@ import drawing_objects.*;
|
|||||||
import movement_strategy.*;
|
import movement_strategy.*;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class ShipsGenericCollection<T extends DrawingShip, U extends IMoveableObject>{
|
public class ShipsGenericCollection<T extends DrawingShip, U extends IMoveableObject>{
|
||||||
private final int pictureWidth;
|
private final int pictureWidth;
|
||||||
private final int pictureHeight;
|
private final int pictureHeight;
|
||||||
private final int placeSizeWidth = 220;
|
private final int placeSizeWidth = 220;
|
||||||
private final int placeSizeHeight = 60;
|
private final int placeSizeHeight = 60;
|
||||||
private final SetGeneric<T> collection;
|
public static char separatorRecords = ';';
|
||||||
public int getCount(){
|
public static char separatorForObject = ':';
|
||||||
return collection.getCount();
|
private SetGeneric<T> collection;
|
||||||
}
|
|
||||||
public ShipsGenericCollection(int picWidth, int picHeight){
|
public ShipsGenericCollection(int picWidth, int picHeight){
|
||||||
int width = picWidth / placeSizeWidth;
|
int width = picWidth / placeSizeWidth;
|
||||||
int height = picHeight / placeSizeHeight;
|
int height = picHeight / placeSizeHeight;
|
||||||
@ -39,11 +42,14 @@ public class ShipsGenericCollection<T extends DrawingShip, U extends IMoveableOb
|
|||||||
return null;
|
return null;
|
||||||
return collection.get(position);
|
return collection.get(position);
|
||||||
}
|
}
|
||||||
public void showShips(Graphics2D graphics2D){
|
public int getCount(){
|
||||||
DrawBackground(graphics2D);
|
return collection.getCount();
|
||||||
DrawObjects(graphics2D);
|
|
||||||
}
|
}
|
||||||
private void DrawBackground(Graphics2D g){
|
public void showShips(Graphics2D graphics2D){
|
||||||
|
drawBackground(graphics2D);
|
||||||
|
drawObjects(graphics2D);
|
||||||
|
}
|
||||||
|
private void drawBackground(Graphics2D g){
|
||||||
BasicStroke stroke = new BasicStroke(3);
|
BasicStroke stroke = new BasicStroke(3);
|
||||||
g.setStroke(stroke);
|
g.setStroke(stroke);
|
||||||
for (int i = 0; i < pictureWidth / placeSizeWidth; i++){
|
for (int i = 0; i < pictureWidth / placeSizeWidth; i++){
|
||||||
@ -55,7 +61,7 @@ public class ShipsGenericCollection<T extends DrawingShip, U extends IMoveableOb
|
|||||||
pictureHeight / placeSizeHeight * placeSizeHeight);
|
pictureHeight / placeSizeHeight * placeSizeHeight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void DrawObjects(Graphics2D g){
|
private void drawObjects(Graphics2D g){
|
||||||
for (int i = 0; i < collection.getCount(); i++){
|
for (int i = 0; i < collection.getCount(); i++){
|
||||||
DrawingShip ship = collection.get(i);
|
DrawingShip ship = collection.get(i);
|
||||||
if (ship != null)
|
if (ship != null)
|
||||||
@ -66,4 +72,31 @@ public class ShipsGenericCollection<T extends DrawingShip, U extends IMoveableOb
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public boolean saveData(File f, String name) throws IOException {
|
||||||
|
if(f.exists()) {
|
||||||
|
f.delete();
|
||||||
|
}
|
||||||
|
f.createNewFile();
|
||||||
|
StringBuilder data = new StringBuilder();
|
||||||
|
data.append("ShipsCollection\n");
|
||||||
|
data.append(String.format("%s\n", name));
|
||||||
|
StringBuilder records = new StringBuilder();
|
||||||
|
for(DrawingShip elem : getShips()) {
|
||||||
|
records.append(String.format("%s%c", ExtensionDrawingShip.getDataForSave(elem, separatorForObject), separatorRecords));
|
||||||
|
}
|
||||||
|
data.append(records);
|
||||||
|
if(data.length() == 0)
|
||||||
|
return false;
|
||||||
|
FileWriter writer = new FileWriter(f);
|
||||||
|
writer.write(data.toString());
|
||||||
|
writer.flush();
|
||||||
|
writer.close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public ArrayList<T> getShips(){
|
||||||
|
return collection.getShips();
|
||||||
|
}
|
||||||
|
public void clear(){
|
||||||
|
collection = new SetGeneric<>(pictureWidth * pictureHeight);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,24 @@
|
|||||||
package generics;
|
package generics;
|
||||||
|
|
||||||
import drawing_objects.DrawingShip;
|
import drawing_objects.DrawingShip;
|
||||||
|
import drawing_objects.ExtensionDrawingShip;
|
||||||
import movement_strategy.DrawingObjectShip;
|
import movement_strategy.DrawingObjectShip;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class ShipsGenericStorage {
|
public class ShipsGenericStorage {
|
||||||
private final int pictureWidth;
|
private final int pictureWidth;
|
||||||
private final int pictureHeight;
|
private final int pictureHeight;
|
||||||
final HashMap<String, ShipsGenericCollection<DrawingShip, DrawingObjectShip>> shipsStorages;
|
public final HashMap<String, ShipsGenericCollection<DrawingShip, DrawingObjectShip>> shipsStorages;
|
||||||
|
private static final char separatorForKeyValue = '|';
|
||||||
|
private final char separatorRecords = ';';
|
||||||
|
private static final char separatorForObject = ':';
|
||||||
public ShipsGenericStorage(int pictureWidth, int pictureHeight){
|
public ShipsGenericStorage(int pictureWidth, int pictureHeight){
|
||||||
shipsStorages = new HashMap<>();
|
shipsStorages = new HashMap<>();
|
||||||
this.pictureWidth = pictureWidth;
|
this.pictureWidth = pictureWidth;
|
||||||
@ -23,11 +32,6 @@ public class ShipsGenericStorage {
|
|||||||
return;
|
return;
|
||||||
shipsStorages.put(name, new ShipsGenericCollection<>(pictureWidth, pictureHeight));
|
shipsStorages.put(name, new ShipsGenericCollection<>(pictureWidth, pictureHeight));
|
||||||
}
|
}
|
||||||
public void delSet(String name){
|
|
||||||
if(!shipsStorages.containsKey(name))
|
|
||||||
return;
|
|
||||||
shipsStorages.remove(name);
|
|
||||||
}
|
|
||||||
public ShipsGenericCollection<DrawingShip, DrawingObjectShip> getSet(String name){
|
public ShipsGenericCollection<DrawingShip, DrawingObjectShip> getSet(String name){
|
||||||
if(!shipsStorages.containsKey(name))
|
if(!shipsStorages.containsKey(name))
|
||||||
return null;
|
return null;
|
||||||
@ -36,4 +40,113 @@ public class ShipsGenericStorage {
|
|||||||
public DrawingShip getShip(String collectionName, int position){
|
public DrawingShip getShip(String collectionName, int position){
|
||||||
return shipsStorages.get(collectionName).get(position);
|
return shipsStorages.get(collectionName).get(position);
|
||||||
}
|
}
|
||||||
|
public boolean saveData(File f) throws IOException {
|
||||||
|
if(f.exists()) {
|
||||||
|
f.delete();
|
||||||
|
}
|
||||||
|
f.createNewFile();
|
||||||
|
StringBuilder data = new StringBuilder();
|
||||||
|
data.append("ShipStorage\n");
|
||||||
|
for(Map.Entry<String, ShipsGenericCollection<DrawingShip, DrawingObjectShip>> record : shipsStorages.entrySet()){
|
||||||
|
StringBuilder records = new StringBuilder();
|
||||||
|
for(DrawingShip elem : record.getValue().getShips()) {
|
||||||
|
records.append(String.format("%s%c", ExtensionDrawingShip.getDataForSave(elem, separatorForObject), separatorRecords));
|
||||||
|
}
|
||||||
|
data.append(String.format("%s%c%s\n", record.getKey(), separatorForKeyValue, records));
|
||||||
|
}
|
||||||
|
if(data.length() == 0)
|
||||||
|
return false;
|
||||||
|
FileWriter writer = new FileWriter(f);
|
||||||
|
writer.write(data.toString());
|
||||||
|
writer.flush();
|
||||||
|
writer.close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public boolean loadData(File f) throws FileNotFoundException {
|
||||||
|
if(!f.exists())
|
||||||
|
return false;
|
||||||
|
StringBuilder bufferTextFromFile =new StringBuilder();
|
||||||
|
Scanner s = new Scanner(f);
|
||||||
|
while(s.hasNext())
|
||||||
|
bufferTextFromFile.append(s.next()).append("\n");
|
||||||
|
s.close();
|
||||||
|
var strs = bufferTextFromFile.toString().split("\n");
|
||||||
|
if(strs.length == 0)
|
||||||
|
return false;
|
||||||
|
if (!strs[0].startsWith("ShipStorage"))
|
||||||
|
return false;
|
||||||
|
shipsStorages.clear();
|
||||||
|
for(String data : strs){
|
||||||
|
String st = "\\" + separatorForKeyValue;
|
||||||
|
String[]record = data.split(st);
|
||||||
|
if (record.length != 2)
|
||||||
|
continue;
|
||||||
|
ShipsGenericCollection<DrawingShip, DrawingObjectShip> collection = new ShipsGenericCollection<>(pictureWidth, pictureHeight);
|
||||||
|
String[] set = record[1].split(Character.toString(separatorRecords));
|
||||||
|
for(int i = set.length -1; i >=0; i--){
|
||||||
|
String elem = set[i];
|
||||||
|
DrawingShip ship = ExtensionDrawingShip.createDrawingShip(elem, separatorForObject, pictureWidth, pictureHeight);
|
||||||
|
if (ship != null)
|
||||||
|
{
|
||||||
|
if (!(collection.insert(ship)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shipsStorages.put(record[0], collection);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public boolean loadCollection(File f) throws FileNotFoundException {
|
||||||
|
if(!f.exists())
|
||||||
|
return false;
|
||||||
|
StringBuilder bufferTextFromFile =new StringBuilder();
|
||||||
|
Scanner s = new Scanner(f);
|
||||||
|
while(s.hasNext())
|
||||||
|
bufferTextFromFile.append(s.next()).append("\n");
|
||||||
|
s.close();
|
||||||
|
var strs = bufferTextFromFile.toString().split("\n");
|
||||||
|
if(strs.length == 0)
|
||||||
|
return false;
|
||||||
|
if (!strs[0].startsWith("ShipCollection"))
|
||||||
|
return false;
|
||||||
|
String collectionName = strs[1];
|
||||||
|
ShipsGenericCollection<DrawingShip, DrawingObjectShip> collection = getCollection(collectionName);
|
||||||
|
if(collection == null)
|
||||||
|
collection = new ShipsGenericCollection<>(pictureWidth, pictureHeight);
|
||||||
|
else
|
||||||
|
collection.clear();
|
||||||
|
String[] shipsInfo = strs[2].split(Character.toString(ShipsGenericCollection.separatorRecords));
|
||||||
|
for(int i = shipsInfo.length-1; i >= 0; i--){
|
||||||
|
String data = shipsInfo[i];
|
||||||
|
DrawingShip ship = ExtensionDrawingShip.createDrawingShip(data, ShipsGenericCollection.separatorForObject, pictureWidth, pictureHeight);
|
||||||
|
if (ship != null)
|
||||||
|
{
|
||||||
|
if (!(collection.insert(ship)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
addSetFromFile(collectionName, collection);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public void addSetFromFile(String name, ShipsGenericCollection<DrawingShip, DrawingObjectShip> toAdd){
|
||||||
|
if(shipsStorages.containsKey(name)){
|
||||||
|
shipsStorages.remove(name);
|
||||||
|
}
|
||||||
|
shipsStorages.put(name, toAdd);
|
||||||
|
}
|
||||||
|
public void delSet(String name, LinkedList<DrawingShip> trashBox){
|
||||||
|
if(!shipsStorages.containsKey(name))
|
||||||
|
return;
|
||||||
|
ShipsGenericCollection<DrawingShip, DrawingObjectShip> cur = shipsStorages.get(name);
|
||||||
|
for(int i = 0; i < cur.getCount(); i++)
|
||||||
|
trashBox.push(cur.get(i));
|
||||||
|
shipsStorages.remove(name);
|
||||||
|
}
|
||||||
|
public ShipsGenericCollection<DrawingShip, DrawingObjectShip> getCollection(String collectionName){
|
||||||
|
return shipsStorages.get(collectionName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user