Skip to content

kalteherz/VectorSaver

Repository files navigation

VectorSaver

Library for saving objects to JSON (using GSON).

Public-методы классов описаны в файле "Методы классов библиотеки.pdf"

Пример работы с библиотекой для сохранения и загрузки массива объектов — фигур из векторного редактора

СОХРАНЕНИЕ

//создаём пустое хранилище объектов
ObjectsContainer oc = new ObjectsContainer();
//указываем автора программы, сохраняющей данные
oc.authorName = "BolotinSE"; 

//разбираем очередь с фигурами
for (int i = 0; i < queue.getSize(); i++){
  //получаем текущую фигуру
  Shape shape = queue.getShape(i);
  //создаём новый item-объект класса текущей фигуры
  Item item = new Item(shape.getClass().getCanonicalName());
  //добавляем в item-объект свойство Color
  item.properties.add(new ItemProperty("Color", shape.color, Color.class));
  //добавляем в item-объект свойство массив точек Points
  item.properties.add(new ItemProperty("Points", shape.getAbsPoints(), ArrayList.class));
  //добавляем item-объект в хранилище объектов
  oc.items.add(item);
}

//сохраняем хранилище объектов в файл
oc.saveToFile("MyShapes.myvector");

ЗАГРУЗКА

//создаём пустое хранилище объектов
ObjectsContainer oc = new ObjectsContainer();
//загружаем в хранилище данные из файла
oc.loadFromFile(new File("MyShapes.myvector"));

//создаём строку для логирования ошибок
StringBuilder log = new StringBuilder();
Shape shape;
//разбираем хранилище объектов
for (Item item: oc.items){
    //определяем класс текущего item-объекта из хранилища
    //и создаём объект фигуры нужного класса 
    switch (item.itemClass){
    case "Line":
        shape = new Line();
        break;
    case "Oval":
        shape = new Oval();
        break;
    case "Rect":
        shape = new Rect();
        break;
    case "Polygon":
        shape = new Polygon();
        break;
    case "Bezier":
        shape = new Bezier();
        break;
    default:
        log.append("Неизвестный класс '").append(item.itemClass).append("'").append(System.lineSeparator());
        continue;
    } 
  
    //выбираем свойства из item-объекта и добавляем в фигуру
    for (ItemProperty prop: item.properties){
    switch (prop.propertyName){
        case "Color":
            shape.color = prop.getProperty(Color.class);
            break;
        case "Points":
            shape.setAbsPoints(prop.getProperty(new TypeToken<ArrayList<Point>>(){}.getType()));
            break;
        default:
            log.append("Неизвестное свойство '").append(prop.propertyName).append("'").append(System.lineSeparator());
            continue;
    }
    }
    //добавляем текущую фигуру в очередь фигур
    queue.addShape(shape);
}


//если строка логов не пустая, сообщаем об ошибках загрузки пользователю
if (!log.toString().equals("")){
    JOptionPane.showMessageDialog(this, log);
}

About

Library for saving objects to JSON (using GSON).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages