package laba1Loco; import java.awt.Color; import java.lang.reflect.InvocationTargetException; public class ExtentionDrawingTrain { /// /// Создание объекта из строки /// /// Строка с данными для создания объекта /// Разделитель даннных /// Ширина /// Высота /// Объект public static DrawingTrain CreateDrawingTrain(String info, String separatorForObject, int width, int height) { String[] strs = info.split(separatorForObject); if (strs.length == 5) { String[] colorValues = strs[2].split(","); DrawingTrain drawingTrain = new DrawingTrain(Integer.parseInt(strs[0]), (double)Integer.parseInt(strs[1]), new Color( Integer.parseInt(colorValues[0].replaceAll("\\D", "")), Integer.parseInt(colorValues[1].replaceAll("\\D", "")), Integer.parseInt(colorValues[2].replaceAll("\\D", "")) ), Integer.parseInt(strs[3]), width, height); try{ drawingTrain.wheelDrawing = (IWheelDrawing)Class.forName(strs[4]).getDeclaredConstructor().newInstance(); drawingTrain.wheelDrawing.setNumWheel(drawingTrain.EntityTrain.numWheel); } catch(Exception e){ return null; } return drawingTrain; } if (strs.length == 9) { String[] colorValues = strs[2].split(","); String[] colorValues2 = strs[5].split(","); DrawingLoco drawingLoco = new DrawingLoco( Integer.parseInt(strs[0]), (double)Integer.parseInt(strs[1]), new Color( Integer.parseInt(colorValues[0].replaceAll("\\D", "")), Integer.parseInt(colorValues[1].replaceAll("\\D", "")), Integer.parseInt(colorValues[2].replaceAll("\\D", "")) ), Integer.parseInt(strs[3]), new Color( Integer.parseInt(colorValues2[0].replaceAll("\\D", "")), Integer.parseInt(colorValues2[1].replaceAll("\\D", "")), Integer.parseInt(colorValues2[2].replaceAll("\\D", "")) ), strs[6].equals("true"), strs[7].equals("true"), strs[8].equals("true"), width, height); try{ drawingLoco.wheelDrawing = (IWheelDrawing)Class.forName(strs[4]).getDeclaredConstructor().newInstance(); drawingLoco.wheelDrawing.setNumWheel(drawingLoco.EntityTrain.numWheel); } catch(Exception e){ return null; } return drawingLoco; } return null; } /// /// Получение данных для сохранения в файл /// /// Сохраняемый объект /// Разделитель даннных /// Строка с данными по объекту public static String GetDataForSave(DrawingTrain drawningTrain, String separatorForObject) { EntityTrain train = drawningTrain.EntityTrain; if (train == null) { return null; } String str = "" + train.Speed + separatorForObject + (int)train.Weight + separatorForObject + train.BodyColor + separatorForObject + train.numWheel + separatorForObject + drawningTrain.wheelDrawing.getClass().getName(); if (!(train instanceof EntityLoco)) { return str; } return str+separatorForObject+((EntityLoco)train).AdditionalColor.toString()+separatorForObject+((EntityLoco)train).Tube+separatorForObject+((EntityLoco)train).FuelTank+separatorForObject+((EntityLoco)train).LocoLine; } }