Package app.controler.note

Source Code of app.controler.note.NoteImp

package app.controler.note;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.ytreza.data.table.exception.ItemException;
import org.ytreza.data.table.exception.UnableToDeleteException;
import org.ytreza.data.table.exception.UnableToSaveException;

import app.controler.tag.Tag;
import app.controler.tag.TagManager;
import app.database.TableFactory;
import app.database.model.note.ModelNote;


public class NoteImp implements Note{
  private String subject;
  private String text;
 
  private TableFactory factory;
  private Integer id;
  private ModelNote modelNote;
  private boolean isUpdated;
 
  private List<Tag> tagsList; 
 
  public NoteImp(TableFactory factory) {
    this(factory, -1);
  }

  public NoteImp(TableFactory factory, Integer noteId) {
    this.factory = factory;
    this.id = noteId;
    isUpdated = false;
  }

  @Override
  public String getSubject() {
    readModelNoteIfNecessary();
    return subject;
  }


  @Override
  public String getText() {
    readModelNoteIfNecessary();
    return text;
  }

  @Override
  public void setSubject(String subject) {
    this.subject = subject;
  }

  @Override
  public void setText(String text) {
    this.text = text;
  }
 
  private void readModelNoteIfNecessary() {
    if (modelNote == null) {
      modelNote = factory.getTableNote().getOrCreateItem(id);
      if (subject == null) { subject = modelNote.getSubject();}
      if (text == null) { text = modelNote.getText();}
    }
  }

  @Override
  public void save() {
    readModelNoteIfNecessary();
    saveNote();
    saveTag();
  }

  private void saveNote() {
    modelNote.setSubject(getSubject());
    modelNote.setText(getText());
    if (modelNote.isUpdated()){
      try {
        modelNote.save();
        id = modelNote.getId();
        isUpdated = true;
      } catch (ItemException e) {
        // AUTO_TODO Auto-generated catch block
        e.printStackTrace();
      } catch (UnableToSaveException e) {
        // AUTO_TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
  }
 
  private void saveTag() {
    // AUTO_TODO Auto-generated method stub
   
  }

 

  @Override
  public void delete() {
    try {
      modelNote.delete();
      id = -1;
    } catch (ItemException e) {
      // AUTO_TODO Auto-generated catch block
      e.printStackTrace();
    } catch (UnableToDeleteException e) {
      // AUTO_TODO Auto-generated catch block
      e.printStackTrace();
    }
  }

  @Override
  public Note copy() {
    // TODO Faire la copie d'une note
    return null;
  }

  @Override
  public boolean isNew() {
    return modelNote.isNew();
  }

  @Override
  public void setTagList(String text) {
    resetTagsList();
    fillTagsListWithString(text);
  }

  private void fillTagsListWithString(String text) {
    text = text.replace('\n',';');
    List<String> list = Arrays.asList(text.split(";"));
   
    TagManager tagManager = new TagManager(factory);
   
    for (String label : list) {
      add(tagManager.createTag(label));
    }
  }

  private void add(Tag tag) {
    tagsList.add(tag)
  }

  private void resetTagsList() {
    tagsList = new ArrayList<Tag>();
  }

  @Override
  public boolean isUpdated() {
    return isUpdated;
  }

  @Override
  public String toItemList() {
    return getSubject();
  }
 
  @Override
  public String toString() {
    return id + " " + getSubject();
  }
 
}
TOP

Related Classes of app.controler.note.NoteImp

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.