Package clips.delegate.directory.complex

Source Code of clips.delegate.directory.complex.DirectoryDangerItem$DangerServiceItems

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package clips.delegate.directory.complex;

import beans.directory.danger.DirectoryDangerBeanRemote;
import cli_fmw.delegate.directory.DirectoryItemRO;
import cli_fmw.delegate.directory.DirectoryItemRecursive;
import cli_fmw.delegate.cache.Cache;
import beans.directory.danger.entity.DangerDetails;
import cli_fmw.delegate.directory.DirectoryMagic;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.SelectorEditableExceptional;
import beans.directory.danger.entity.DangerServiceDetails;
import framework.generic.ClipsServerException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;




/**
*
* @author petr
*/
public class DirectoryDangerItem extends
    DirectoryItemRecursive<DirectoryDangerItem, DangerDetails> {
   
    private Cache<SelectorEditableExceptional<DangerServiceData>> services =
            new Cache<SelectorEditableExceptional<DangerServiceData>>();
   
    public DirectoryDangerItem(DangerDetails details) {
       super(details);
    }

    public int getFrequency(){
        return getDetails().frequency;
    }
   
    public void setFrequency(int frequency) throws ClipsException{
       if(isInDirectory()) {
            DangerDetails newDetails = getDetailsCopy();
            newDetails.frequency = frequency;
            saveDetails(newDetails);
        } else {
            getDetails().frequency = frequency;
        }
    }
   
    public String getDescription() {
        return getDetails().description;
    }

    /**
     * Итемы, не содержащие связанных услуг выбирать нельзя
     * @return
     */
    @Override
    public boolean canBeSelected() {
        if (!super.canBeSelected()) {
            return false;
        }
        try {
            if (getID() == 0 || getDangerServices().size() == 0) {
                return false;
            }
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
            return false;
        }
        return true;
    }



    public void setDescription(String description) throws ClipsException {
        if(isInDirectory()) {
            DangerDetails newDetails = getDetailsCopy();
            newDetails.description = description;
            saveDetails(newDetails);
        } else {
            getDetails().description = description;
        }
    }
   
    /**
     * Вернёт список прицепленных услуг
     * @return список
     * @throws cli_fmw.main.ClipsException
     */
   
    public SelectorEditableExceptional<DangerServiceData> getDangerServices() throws ClipsException {
        if (!services.inCache()) {
            services.set(new DangerServiceItems());
        }
        return services.get();
    }

    @Override
    protected DirectoryDanger getDirectory() {
        return (DirectoryDanger) super.getDirectory();
    }

    private class DangerServiceItems implements SelectorEditableExceptional<DangerServiceData> {

        private List<DangerServiceData> items = new ArrayList<DangerServiceData>();
        private int dangerId;

        public DangerServiceItems() throws ClipsException {
            dangerId = getID();
           
            for (DangerServiceDetails dsd : getDirectory().getServiceList(dangerId)) {
                items.add(new DangerServiceData(dsd));
            }
        }

        @Override
        public int size() {
            return items.size();
        }
       
        @Override
        public DangerServiceData get(int index) {
            return items.get(index);
        }

        @Override
        public void remove(int index) throws ClipsException {
            DangerServiceData data = items.get(index);
            remove(data);
        }

        @Override
        public void remove(DangerServiceData element) throws ClipsException {
            getDirectory().removeService(element.getDetails());
        }

        @Override
        public void append(DangerServiceData item) throws ClipsException {
            DangerServiceDetails details = item.getDetails();
            getDirectory().addService(details);

            DangerServiceData founded = null;
            for (DangerServiceData d : items) {
                if (d.getDetails().dangerId == details.dangerId
                        && d.getDetails().serviceId == details.serviceId
                        && d.getDetails().specialityID == details.specialityID) {
                    founded = d;
                    break;
                }
            }
            if (founded == null) {
                items.add(item);
            } else {
                founded.setDescription(item.getDescription());
                founded.setSpeciality(item.getSpeciality());
            }
        }

        @Override
        public void removeByID(int id) throws ClipsException {
            throw new UnsupportedOperationException("Not supported yet.");
        }

        @Override
        public boolean contains(DangerServiceData element) {
            return items.contains(element);
        }
    }
  @Override
  public int compareTo(DirectoryItemRO item) {
    return getTitle().compareTo(((DirectoryDangerItem)item).getTitle());
  }
   
}
TOP

Related Classes of clips.delegate.directory.complex.DirectoryDangerItem$DangerServiceItems

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.