Tab.java 2.42 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.day.cq.commons.LabeledResource
 *  org.apache.sling.api.resource.Resource
 *  org.apache.sling.api.resource.ValueMap
 */
package com.day.cq.dam.commons.schemaforms.internal;

import com.day.cq.commons.LabeledResource;
import com.day.cq.dam.commons.schemaforms.internal.Column;
import com.day.cq.dam.commons.schemaforms.internal.MergeableResource;
import com.day.cq.dam.commons.schemaforms.internal.MergedItemResource;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ValueMap;

public class Tab
extends MergedItemResource {
    public static final String TABID = "tabid";
    private String id;

    public Tab(Resource resource) {
        super(resource);
        LabeledResource label = (LabeledResource)resource.adaptTo(LabeledResource.class);
        ValueMap vm = (ValueMap)resource.adaptTo(ValueMap.class);
        this.id = (String)vm.get("tabid", (Object)label.getTitle());
    }

    public String getId() {
        return this.id;
    }

    @Override
    protected boolean merge(Resource other) {
        if (other instanceof Tab) {
            Tab otherTab = (Tab)other;
            if (this.getId().equals(otherTab.getId())) {
                Iterator<Resource> oColIt = otherTab.itemsResource.listChildren();
                ArrayList<Column> extraCols = new ArrayList<Column>();
                while (oColIt.hasNext()) {
                    boolean merged = false;
                    Column oCol = (Column)oColIt.next();
                    Iterator<Resource> colIt = this.itemsResource.listChildren();
                    while (colIt.hasNext()) {
                        Column col = (Column)colIt.next();
                        if (!col.merge((Resource)oCol)) continue;
                        merged = true;
                        break;
                    }
                    if (merged) continue;
                    extraCols.add(oCol);
                }
                for (Column col : extraCols) {
                    this.itemsResource.getItems().add((Resource)col);
                }
                return true;
            }
        }
        return false;
    }

    @Override
    protected Resource getItemResource(Resource res) {
        if (res instanceof Column) {
            return res;
        }
        return new Column(res);
    }
}