16e80583aSopenharmony_ci/**
26e80583aSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
36e80583aSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
46e80583aSopenharmony_ci * you may not use this file except in compliance with the License.
56e80583aSopenharmony_ci * You may obtain a copy of the License at
66e80583aSopenharmony_ci *
76e80583aSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
86e80583aSopenharmony_ci *
96e80583aSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
106e80583aSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
116e80583aSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
126e80583aSopenharmony_ci * See the License for the specific language governing permissions and
136e80583aSopenharmony_ci * limitations under the License.
146e80583aSopenharmony_ci */
156e80583aSopenharmony_ci
166e80583aSopenharmony_ciimport { AppItemInfo } from './AppItemInfo';
176e80583aSopenharmony_ciimport GridLayoutInfoColumns from './GridLayoutInfoColumns';
186e80583aSopenharmony_ciimport GridLayoutItemInfo from './GridLayoutItemInfo';
196e80583aSopenharmony_ciimport { CheckEmptyUtils } from '../utils/CheckEmptyUtils';
206e80583aSopenharmony_ci
216e80583aSopenharmony_ci/**
226e80583aSopenharmony_ci * Item info of GridLayoutInfo item.
236e80583aSopenharmony_ci */
246e80583aSopenharmony_ciexport default class GridLayoutItemBuilder {
256e80583aSopenharmony_ci    /**
266e80583aSopenharmony_ci     * GridLayoutItemInfo: id
276e80583aSopenharmony_ci     */
286e80583aSopenharmony_ci    readonly id: number | undefined;
296e80583aSopenharmony_ci
306e80583aSopenharmony_ci    /**
316e80583aSopenharmony_ci     * GridLayoutItemInfo: cardId
326e80583aSopenharmony_ci     */
336e80583aSopenharmony_ci    cardId: number | undefined;
346e80583aSopenharmony_ci
356e80583aSopenharmony_ci    /**
366e80583aSopenharmony_ci     * GridLayoutItemInfo: ID of the bigfolder.
376e80583aSopenharmony_ci     */
386e80583aSopenharmony_ci    folderId: string | undefined;
396e80583aSopenharmony_ci
406e80583aSopenharmony_ci    /**
416e80583aSopenharmony_ci     * GridLayoutItemInfo: bigfolder id
426e80583aSopenharmony_ci     * Not in bigfolder: - 100
436e80583aSopenharmony_ci     * In a bigfolder: ID of the bigfolder.
446e80583aSopenharmony_ci     */
456e80583aSopenharmony_ci    container: number | undefined;
466e80583aSopenharmony_ci
476e80583aSopenharmony_ci    /**
486e80583aSopenharmony_ci     * GridLayoutItemInfo: bigfolder Name
496e80583aSopenharmony_ci     */
506e80583aSopenharmony_ci    folderName: string | undefined;
516e80583aSopenharmony_ci
526e80583aSopenharmony_ci    /**
536e80583aSopenharmony_ci     * GridLayoutItemInfo: badgeNumber
546e80583aSopenharmony_ci     */
556e80583aSopenharmony_ci    badgeNumber: number | undefined;
566e80583aSopenharmony_ci
576e80583aSopenharmony_ci    /**
586e80583aSopenharmony_ci     * GridLayoutItemInfo: type  0:app  1:card  3:bigfolder
596e80583aSopenharmony_ci     */
606e80583aSopenharmony_ci    typeId: number | undefined;
616e80583aSopenharmony_ci
626e80583aSopenharmony_ci    /**
636e80583aSopenharmony_ci     * GridLayoutItemInfo: area
646e80583aSopenharmony_ci     */
656e80583aSopenharmony_ci    area: number[] | undefined;
666e80583aSopenharmony_ci
676e80583aSopenharmony_ci    /**
686e80583aSopenharmony_ci     * GridLayoutItemInfo: page
696e80583aSopenharmony_ci     */
706e80583aSopenharmony_ci    page: number | undefined;
716e80583aSopenharmony_ci
726e80583aSopenharmony_ci    /**
736e80583aSopenharmony_ci     * GridLayoutItemInfo: column of positons
746e80583aSopenharmony_ci     */
756e80583aSopenharmony_ci    column: number | undefined;
766e80583aSopenharmony_ci
776e80583aSopenharmony_ci    /**
786e80583aSopenharmony_ci     * GridLayoutItemInfo: row of positons
796e80583aSopenharmony_ci     */
806e80583aSopenharmony_ci    row: number | undefined;
816e80583aSopenharmony_ci
826e80583aSopenharmony_ci    /**
836e80583aSopenharmony_ci     * GridLayoutItemInfo: bigfolder apps info
846e80583aSopenharmony_ci     */
856e80583aSopenharmony_ci    layoutInfo: AppItemInfo[] | undefined;
866e80583aSopenharmony_ci
876e80583aSopenharmony_ci    /**
886e80583aSopenharmony_ci     * Indicates bundleName.
896e80583aSopenharmony_ci     */
906e80583aSopenharmony_ci    bundleName: string | undefined;
916e80583aSopenharmony_ci
926e80583aSopenharmony_ci    /**
936e80583aSopenharmony_ci     * Indicates abilityName.
946e80583aSopenharmony_ci     */
956e80583aSopenharmony_ci    abilityName: string | undefined;
966e80583aSopenharmony_ci
976e80583aSopenharmony_ci    moduleName: string | undefined;
986e80583aSopenharmony_ci
996e80583aSopenharmony_ci    /**
1006e80583aSopenharmony_ci     * Indicates keyName.
1016e80583aSopenharmony_ci     */
1026e80583aSopenharmony_ci    keyName: string | undefined;
1036e80583aSopenharmony_ci
1046e80583aSopenharmony_ci    /**
1056e80583aSopenharmony_ci     * GridLayoutItemInfo: extend1
1066e80583aSopenharmony_ci     */
1076e80583aSopenharmony_ci    extend1: string | undefined;
1086e80583aSopenharmony_ci
1096e80583aSopenharmony_ci    /**
1106e80583aSopenharmony_ci     * GridLayoutItemInfo: extend2
1116e80583aSopenharmony_ci     */
1126e80583aSopenharmony_ci    extend2: string | undefined;
1136e80583aSopenharmony_ci
1146e80583aSopenharmony_ci    /**
1156e80583aSopenharmony_ci     * GridLayoutItemInfo: extend3
1166e80583aSopenharmony_ci     */
1176e80583aSopenharmony_ci    extend3: number | undefined;
1186e80583aSopenharmony_ci
1196e80583aSopenharmony_ci    constructor(id: number) {
1206e80583aSopenharmony_ci        this.id = id;
1216e80583aSopenharmony_ci    }
1226e80583aSopenharmony_ci
1236e80583aSopenharmony_ci    static fromResultSet(resultSet: any): GridLayoutItemBuilder {
1246e80583aSopenharmony_ci        let gridlayoutItemBuilder = new GridLayoutItemBuilder(resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.ID)));
1256e80583aSopenharmony_ci        gridlayoutItemBuilder.setCardId(resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.CARD_ID)));
1266e80583aSopenharmony_ci        gridlayoutItemBuilder.setFolderId(resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.FOLDER_ID)));
1276e80583aSopenharmony_ci        gridlayoutItemBuilder.setContainer(resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.CONTAINER)));
1286e80583aSopenharmony_ci        gridlayoutItemBuilder.setFolderName(resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.FOLDER_NAME)));
1296e80583aSopenharmony_ci        gridlayoutItemBuilder.setBadgeNumber(resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.BADGE_NUMBER)));
1306e80583aSopenharmony_ci        gridlayoutItemBuilder.setTypeId(resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.TYPE_ID)));
1316e80583aSopenharmony_ci        gridlayoutItemBuilder.setArea(resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.AREA)));
1326e80583aSopenharmony_ci        gridlayoutItemBuilder.setPage(resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.PAGE)));
1336e80583aSopenharmony_ci        gridlayoutItemBuilder.setColumn(resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.COLUMN)));
1346e80583aSopenharmony_ci        gridlayoutItemBuilder.setRow(resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.ROW)));
1356e80583aSopenharmony_ci        gridlayoutItemBuilder.setBundleName(resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.BUNDLE_NAME)));
1366e80583aSopenharmony_ci        gridlayoutItemBuilder.setAbilityName(resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.ABILITY_NAME)));
1376e80583aSopenharmony_ci        gridlayoutItemBuilder.setModuleName(resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.MODULE_NAME)));
1386e80583aSopenharmony_ci        gridlayoutItemBuilder.setKeyName(resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.KEY_NAME)));
1396e80583aSopenharmony_ci        gridlayoutItemBuilder.setExtend1(resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.EXTEND1)));
1406e80583aSopenharmony_ci        gridlayoutItemBuilder.setExtend2(resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.EXTEND2)));
1416e80583aSopenharmony_ci        gridlayoutItemBuilder.setExtend3(resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.EXTEND3)));
1426e80583aSopenharmony_ci        return gridlayoutItemBuilder;
1436e80583aSopenharmony_ci    }
1446e80583aSopenharmony_ci
1456e80583aSopenharmony_ci    static buildLayout(resultSet: any): AppItemInfo {
1466e80583aSopenharmony_ci        let appItemInfo = new AppItemInfo();
1476e80583aSopenharmony_ci        appItemInfo.appName = resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.APP_NAME));
1486e80583aSopenharmony_ci        appItemInfo.isSystemApp = resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.IS_SYSTEM_APP)) > 0 ? true :false;
1496e80583aSopenharmony_ci        appItemInfo.isUninstallAble = resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.IS_UNINSTALLABLE)) > 0 ? true :false;
1506e80583aSopenharmony_ci        appItemInfo.appIconId = resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.APPICON_ID));
1516e80583aSopenharmony_ci        appItemInfo.appLabelId = resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.APPLABEL_ID));
1526e80583aSopenharmony_ci        appItemInfo.bundleName = resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.BUNDLE_NAME));
1536e80583aSopenharmony_ci        appItemInfo.abilityName = resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.ABILITY_NAME));
1546e80583aSopenharmony_ci        appItemInfo.moduleName = resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.MODULE_NAME));
1556e80583aSopenharmony_ci        appItemInfo.keyName = resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.KEY_NAME));
1566e80583aSopenharmony_ci        appItemInfo.installTime = resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.INSTALL_TIME));
1576e80583aSopenharmony_ci        appItemInfo.typeId = resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.TYPE_ID));
1586e80583aSopenharmony_ci        appItemInfo.area = this.getArea(resultSet.getString(resultSet.getColumnIndex(GridLayoutInfoColumns.AREA)));
1596e80583aSopenharmony_ci        appItemInfo.page = resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.PAGE));
1606e80583aSopenharmony_ci        appItemInfo.column = resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.COLUMN));
1616e80583aSopenharmony_ci        appItemInfo.row = resultSet.getLong(resultSet.getColumnIndex(GridLayoutInfoColumns.ROW));
1626e80583aSopenharmony_ci        return appItemInfo;
1636e80583aSopenharmony_ci    }
1646e80583aSopenharmony_ci
1656e80583aSopenharmony_ci    private setCardId(cardId: number) {
1666e80583aSopenharmony_ci        this.cardId = cardId;
1676e80583aSopenharmony_ci        return this;
1686e80583aSopenharmony_ci    }
1696e80583aSopenharmony_ci
1706e80583aSopenharmony_ci    private setFolderId(folderId: string) {
1716e80583aSopenharmony_ci        this.folderId = folderId;
1726e80583aSopenharmony_ci        return this;
1736e80583aSopenharmony_ci    }
1746e80583aSopenharmony_ci
1756e80583aSopenharmony_ci    private setContainer(container: number) {
1766e80583aSopenharmony_ci        this.container = container;
1776e80583aSopenharmony_ci        return this;
1786e80583aSopenharmony_ci    }
1796e80583aSopenharmony_ci
1806e80583aSopenharmony_ci    private setFolderName(folderName: string) {
1816e80583aSopenharmony_ci        this.folderName = folderName;
1826e80583aSopenharmony_ci        return this;
1836e80583aSopenharmony_ci    }
1846e80583aSopenharmony_ci
1856e80583aSopenharmony_ci    private setBadgeNumber(badgeNumber: number) {
1866e80583aSopenharmony_ci        this.badgeNumber = badgeNumber;
1876e80583aSopenharmony_ci        return this;
1886e80583aSopenharmony_ci    }
1896e80583aSopenharmony_ci
1906e80583aSopenharmony_ci    private setTypeId(typeId: number) {
1916e80583aSopenharmony_ci        this.typeId = typeId;
1926e80583aSopenharmony_ci        return this;
1936e80583aSopenharmony_ci    }
1946e80583aSopenharmony_ci
1956e80583aSopenharmony_ci    private setArea(area: string) {
1966e80583aSopenharmony_ci        let areaArray:number[] = [];
1976e80583aSopenharmony_ci        let temp = area.split(",");
1986e80583aSopenharmony_ci        if (!CheckEmptyUtils.isEmptyArr(temp) && temp.length === 2) {
1996e80583aSopenharmony_ci            areaArray[0] = Number(temp[0]);
2006e80583aSopenharmony_ci            areaArray[1] = Number(temp[1]);
2016e80583aSopenharmony_ci        }
2026e80583aSopenharmony_ci        this.area = areaArray;
2036e80583aSopenharmony_ci        return this;
2046e80583aSopenharmony_ci    }
2056e80583aSopenharmony_ci
2066e80583aSopenharmony_ci    static getArea(area: string): number[] {
2076e80583aSopenharmony_ci        let areaArray:number[] = [];
2086e80583aSopenharmony_ci        let temp = area.split(",");
2096e80583aSopenharmony_ci        if (!CheckEmptyUtils.isEmptyArr(temp) && temp.length === 2) {
2106e80583aSopenharmony_ci            areaArray[0] = Number(temp[0]);
2116e80583aSopenharmony_ci            areaArray[1] = Number(temp[1]);
2126e80583aSopenharmony_ci        }
2136e80583aSopenharmony_ci        return areaArray;
2146e80583aSopenharmony_ci    }
2156e80583aSopenharmony_ci
2166e80583aSopenharmony_ci    private setPage(page: number) {
2176e80583aSopenharmony_ci        this.page = page;
2186e80583aSopenharmony_ci        return this;
2196e80583aSopenharmony_ci    }
2206e80583aSopenharmony_ci
2216e80583aSopenharmony_ci    private setColumn(column: number) {
2226e80583aSopenharmony_ci        this.column = column;
2236e80583aSopenharmony_ci        return this;
2246e80583aSopenharmony_ci    }
2256e80583aSopenharmony_ci
2266e80583aSopenharmony_ci    private setRow(row: number) {
2276e80583aSopenharmony_ci        this.row = row;
2286e80583aSopenharmony_ci        return this;
2296e80583aSopenharmony_ci    }
2306e80583aSopenharmony_ci
2316e80583aSopenharmony_ci    private setBundleName(bundleName: string) {
2326e80583aSopenharmony_ci        this.bundleName = bundleName;
2336e80583aSopenharmony_ci        return this;
2346e80583aSopenharmony_ci    }
2356e80583aSopenharmony_ci
2366e80583aSopenharmony_ci    private setAbilityName(abilityName: string) {
2376e80583aSopenharmony_ci        this.abilityName = abilityName;
2386e80583aSopenharmony_ci        return this;
2396e80583aSopenharmony_ci    }
2406e80583aSopenharmony_ci
2416e80583aSopenharmony_ci    private setModuleName(moduleName: string) {
2426e80583aSopenharmony_ci        this.moduleName = moduleName;
2436e80583aSopenharmony_ci        return this;
2446e80583aSopenharmony_ci    }
2456e80583aSopenharmony_ci
2466e80583aSopenharmony_ci    private setKeyName(keyName: string) {
2476e80583aSopenharmony_ci        this.keyName = keyName;
2486e80583aSopenharmony_ci        return this;
2496e80583aSopenharmony_ci    }
2506e80583aSopenharmony_ci
2516e80583aSopenharmony_ci    setLayoutInfo(appItemInfos : AppItemInfo[]) {
2526e80583aSopenharmony_ci        this.layoutInfo = appItemInfos;
2536e80583aSopenharmony_ci        return this;
2546e80583aSopenharmony_ci    }
2556e80583aSopenharmony_ci
2566e80583aSopenharmony_ci    private setExtend1(extend1: string) {
2576e80583aSopenharmony_ci        this.extend1 = extend1;
2586e80583aSopenharmony_ci        return this;
2596e80583aSopenharmony_ci    }
2606e80583aSopenharmony_ci
2616e80583aSopenharmony_ci    private setExtend2(extend2: string) {
2626e80583aSopenharmony_ci        this.extend2 = extend2;
2636e80583aSopenharmony_ci        return this;
2646e80583aSopenharmony_ci    }
2656e80583aSopenharmony_ci
2666e80583aSopenharmony_ci    private setExtend3(extend3: number) {
2676e80583aSopenharmony_ci        this.extend3 = extend3;
2686e80583aSopenharmony_ci        return this;
2696e80583aSopenharmony_ci    }
2706e80583aSopenharmony_ci
2716e80583aSopenharmony_ci    buildGridLayoutItem(): GridLayoutItemInfo {
2726e80583aSopenharmony_ci        return new GridLayoutItemInfo(this);
2736e80583aSopenharmony_ci    }
2746e80583aSopenharmony_ci}