mirror of
https://github.com/revanced/ARSCLib.git
synced 2025-04-29 22:04:25 +02:00
disable entry group mapping when not necessary
This commit is contained in:
parent
fd0ef31cb3
commit
6fce5ad5ed
@ -1,4 +1,4 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2022 github.com/REAndroid
|
* Copyright (C) 2022 github.com/REAndroid
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -38,8 +38,9 @@ public class ApkBundle {
|
|||||||
if(moduleList.size()==0){
|
if(moduleList.size()==0){
|
||||||
throw new FileNotFoundException("Nothing to merge, empty modules");
|
throw new FileNotFoundException("Nothing to merge, empty modules");
|
||||||
}
|
}
|
||||||
ApkModule result=new ApkModule(generateMergedModuleName(), new APKArchive());
|
ApkModule result = new ApkModule(generateMergedModuleName(), new APKArchive());
|
||||||
result.setAPKLogger(apkLogger);
|
result.setAPKLogger(apkLogger);
|
||||||
|
result.setDisableEntryGroupMap(true);
|
||||||
result.setLoadDefaultFramework(false);
|
result.setLoadDefaultFramework(false);
|
||||||
|
|
||||||
mergeStringPools(result);
|
mergeStringPools(result);
|
||||||
@ -157,15 +158,16 @@ public class ApkBundle {
|
|||||||
logMessage("Found apk files: "+apkList.size());
|
logMessage("Found apk files: "+apkList.size());
|
||||||
for(File file:apkList){
|
for(File file:apkList){
|
||||||
logVerbose("Loading: "+file.getName());
|
logVerbose("Loading: "+file.getName());
|
||||||
String name=ApkUtil.toModuleName(file);
|
String name = ApkUtil.toModuleName(file);
|
||||||
ApkModule module=ApkModule.loadApkFile(file, name);
|
ApkModule module = ApkModule.loadApkFile(file, name);
|
||||||
module.setAPKLogger(apkLogger);
|
module.setAPKLogger(apkLogger);
|
||||||
addModule(module);
|
addModule(module);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void addModule(ApkModule apkModule){
|
public void addModule(ApkModule apkModule){
|
||||||
apkModule.setLoadDefaultFramework(false);
|
apkModule.setLoadDefaultFramework(false);
|
||||||
String name=apkModule.getModuleName();
|
apkModule.setDisableEntryGroupMap(true);
|
||||||
|
String name = apkModule.getModuleName();
|
||||||
mModulesMap.remove(name);
|
mModulesMap.remove(name);
|
||||||
mModulesMap.put(name, apkModule);
|
mModulesMap.put(name, apkModule);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2022 github.com/REAndroid
|
* Copyright (C) 2022 github.com/REAndroid
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -57,6 +57,8 @@ public class ApkModule implements ApkFile {
|
|||||||
private Decoder mDecoder;
|
private Decoder mDecoder;
|
||||||
private ApkType mApkType;
|
private ApkType mApkType;
|
||||||
private ApkSignatureBlock apkSignatureBlock;
|
private ApkSignatureBlock apkSignatureBlock;
|
||||||
|
private boolean disableEntryGroupMap;
|
||||||
|
|
||||||
public ApkModule(String moduleName, APKArchive apkArchive){
|
public ApkModule(String moduleName, APKArchive apkArchive){
|
||||||
this.moduleName=moduleName;
|
this.moduleName=moduleName;
|
||||||
this.apkArchive=apkArchive;
|
this.apkArchive=apkArchive;
|
||||||
@ -64,6 +66,16 @@ public class ApkModule implements ApkFile {
|
|||||||
this.mUncompressedFiles.addPath(apkArchive);
|
this.mUncompressedFiles.addPath(apkArchive);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isDisableEntryGroupMap() {
|
||||||
|
return disableEntryGroupMap;
|
||||||
|
}
|
||||||
|
public void setDisableEntryGroupMap(boolean disable) {
|
||||||
|
this.disableEntryGroupMap = disable;
|
||||||
|
TableBlock tableBlock = this.mTableBlock;
|
||||||
|
if(tableBlock != null){
|
||||||
|
tableBlock.setDisableEntryGroupMap(disable);
|
||||||
|
}
|
||||||
|
}
|
||||||
public ApkSignatureBlock getApkSignatureBlock() {
|
public ApkSignatureBlock getApkSignatureBlock() {
|
||||||
return apkSignatureBlock;
|
return apkSignatureBlock;
|
||||||
}
|
}
|
||||||
@ -525,6 +537,7 @@ public class ApkModule implements ApkFile {
|
|||||||
new BlockInputSource<>(TableBlock.FILE_NAME, tableBlock);
|
new BlockInputSource<>(TableBlock.FILE_NAME, tableBlock);
|
||||||
archive.add(source);
|
archive.add(source);
|
||||||
mTableBlock = tableBlock;
|
mTableBlock = tableBlock;
|
||||||
|
tableBlock.setDisableEntryGroupMap(isDisableEntryGroupMap());
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public AndroidManifestBlock getAndroidManifestBlock() {
|
public AndroidManifestBlock getAndroidManifestBlock() {
|
||||||
@ -563,6 +576,7 @@ public class ApkModule implements ApkFile {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
mTableBlock = loadTableBlock();
|
mTableBlock = loadTableBlock();
|
||||||
|
mTableBlock.setDisableEntryGroupMap(isDisableEntryGroupMap());
|
||||||
if(initFramework && loadDefaultFramework){
|
if(initFramework && loadDefaultFramework){
|
||||||
Integer version = getAndroidFrameworkVersion();
|
Integer version = getAndroidFrameworkVersion();
|
||||||
initializeAndroidFramework(mTableBlock, version);
|
initializeAndroidFramework(mTableBlock, version);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2022 github.com/REAndroid
|
* Copyright (C) 2022 github.com/REAndroid
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -18,6 +18,7 @@ package com.reandroid.arsc.array;
|
|||||||
import com.reandroid.arsc.base.Block;
|
import com.reandroid.arsc.base.Block;
|
||||||
import com.reandroid.arsc.base.BlockArray;
|
import com.reandroid.arsc.base.BlockArray;
|
||||||
import com.reandroid.arsc.chunk.PackageBlock;
|
import com.reandroid.arsc.chunk.PackageBlock;
|
||||||
|
import com.reandroid.arsc.chunk.TableBlock;
|
||||||
import com.reandroid.arsc.io.BlockLoad;
|
import com.reandroid.arsc.io.BlockLoad;
|
||||||
import com.reandroid.arsc.io.BlockReader;
|
import com.reandroid.arsc.io.BlockReader;
|
||||||
import com.reandroid.arsc.item.IntegerItem;
|
import com.reandroid.arsc.item.IntegerItem;
|
||||||
@ -84,13 +85,17 @@ public class PackageArray extends BlockArray<PackageBlock>
|
|||||||
return getOrCreate(0xff & pkgId);
|
return getOrCreate(0xff & pkgId);
|
||||||
}
|
}
|
||||||
public PackageBlock getOrCreate(int pkgId){
|
public PackageBlock getOrCreate(int pkgId){
|
||||||
PackageBlock packageBlock=getPackageBlockById(pkgId);
|
PackageBlock packageBlock = getPackageBlockById(pkgId);
|
||||||
if(packageBlock!=null){
|
if(packageBlock != null){
|
||||||
return packageBlock;
|
return packageBlock;
|
||||||
}
|
}
|
||||||
packageBlock=createNext();
|
packageBlock = createNext();
|
||||||
packageBlock.setId(pkgId);
|
packageBlock.setId(pkgId);
|
||||||
packageBlock.setName("PACKAGE NAME");
|
packageBlock.setName("PACKAGE NAME");
|
||||||
|
TableBlock tableBlock = getParentInstance(TableBlock.class);
|
||||||
|
if(tableBlock != null){
|
||||||
|
packageBlock.setDisableEntryGroupMap(tableBlock.isDisableEntryGroupMap());
|
||||||
|
}
|
||||||
return packageBlock;
|
return packageBlock;
|
||||||
}
|
}
|
||||||
public PackageBlock getPackageBlockById(byte pkgId){
|
public PackageBlock getPackageBlockById(byte pkgId){
|
||||||
@ -126,8 +131,13 @@ public class PackageArray extends BlockArray<PackageBlock>
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBlockLoaded(BlockReader reader, Block sender) throws IOException {
|
public void onBlockLoaded(BlockReader reader, Block sender) throws IOException {
|
||||||
if(sender==mPackageCount){
|
if(sender != mPackageCount){
|
||||||
setChildesCount(mPackageCount.get());
|
return;
|
||||||
|
}
|
||||||
|
setChildesCount(mPackageCount.get());
|
||||||
|
TableBlock tableBlock = getParentInstance(TableBlock.class);
|
||||||
|
if(tableBlock != null){
|
||||||
|
tableBlock.setDisableEntryGroupMap(tableBlock.isDisableEntryGroupMap());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,48 +1,48 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2022 github.com/REAndroid
|
* Copyright (C) 2022 github.com/REAndroid
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package com.reandroid.arsc.chunk;
|
package com.reandroid.arsc.chunk;
|
||||||
|
|
||||||
import com.reandroid.arsc.BuildInfo;
|
import com.reandroid.arsc.BuildInfo;
|
||||||
import com.reandroid.arsc.array.LibraryInfoArray;
|
import com.reandroid.arsc.array.LibraryInfoArray;
|
||||||
import com.reandroid.arsc.array.SpecTypePairArray;
|
import com.reandroid.arsc.array.SpecTypePairArray;
|
||||||
import com.reandroid.arsc.base.Block;
|
import com.reandroid.arsc.base.Block;
|
||||||
import com.reandroid.arsc.container.BlockList;
|
import com.reandroid.arsc.container.BlockList;
|
||||||
import com.reandroid.arsc.container.PackageBody;
|
import com.reandroid.arsc.container.PackageBody;
|
||||||
import com.reandroid.arsc.container.SpecTypePair;
|
import com.reandroid.arsc.container.SpecTypePair;
|
||||||
import com.reandroid.arsc.group.EntryGroup;
|
import com.reandroid.arsc.group.EntryGroup;
|
||||||
import com.reandroid.arsc.header.PackageHeader;
|
import com.reandroid.arsc.header.PackageHeader;
|
||||||
import com.reandroid.arsc.list.OverlayableList;
|
import com.reandroid.arsc.list.OverlayableList;
|
||||||
import com.reandroid.arsc.list.StagedAliasList;
|
import com.reandroid.arsc.list.StagedAliasList;
|
||||||
import com.reandroid.arsc.pool.SpecStringPool;
|
import com.reandroid.arsc.pool.SpecStringPool;
|
||||||
import com.reandroid.arsc.pool.TypeStringPool;
|
import com.reandroid.arsc.pool.TypeStringPool;
|
||||||
import com.reandroid.arsc.value.Entry;
|
import com.reandroid.arsc.value.Entry;
|
||||||
import com.reandroid.arsc.value.LibraryInfo;
|
import com.reandroid.arsc.value.LibraryInfo;
|
||||||
import com.reandroid.arsc.value.ResConfig;
|
import com.reandroid.arsc.value.ResConfig;
|
||||||
import com.reandroid.arsc.value.StagedAliasEntry;
|
import com.reandroid.arsc.value.StagedAliasEntry;
|
||||||
import com.reandroid.json.JSONArray;
|
import com.reandroid.json.JSONArray;
|
||||||
import com.reandroid.json.JSONConvert;
|
import com.reandroid.json.JSONConvert;
|
||||||
import com.reandroid.json.JSONObject;
|
import com.reandroid.json.JSONObject;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
|
||||||
public class PackageBlock extends Chunk<PackageHeader>
|
public class PackageBlock extends Chunk<PackageHeader>
|
||||||
implements ParentChunk,
|
implements ParentChunk,
|
||||||
JSONConvert<JSONObject>,
|
JSONConvert<JSONObject>,
|
||||||
Comparable<PackageBlock> {
|
Comparable<PackageBlock> {
|
||||||
|
|
||||||
private final TypeStringPool mTypeStringPool;
|
private final TypeStringPool mTypeStringPool;
|
||||||
private final SpecStringPool mSpecStringPool;
|
private final SpecStringPool mSpecStringPool;
|
||||||
@ -50,6 +50,7 @@ package com.reandroid.arsc.chunk;
|
|||||||
private final PackageBody mBody;
|
private final PackageBody mBody;
|
||||||
|
|
||||||
private final Map<Integer, EntryGroup> mEntriesGroup;
|
private final Map<Integer, EntryGroup> mEntriesGroup;
|
||||||
|
private boolean disableEntryGroupMap;
|
||||||
|
|
||||||
public PackageBlock() {
|
public PackageBlock() {
|
||||||
super(new PackageHeader(), 3);
|
super(new PackageHeader(), 3);
|
||||||
@ -103,7 +104,7 @@ package com.reandroid.arsc.chunk;
|
|||||||
return getHeaderBlock().getTypeIdOffset();
|
return getHeaderBlock().getTypeIdOffset();
|
||||||
}
|
}
|
||||||
public BlockList<UnknownChunk> getUnknownChunkList(){
|
public BlockList<UnknownChunk> getUnknownChunkList(){
|
||||||
return mBody.getUnknownChunkList();
|
return mBody.getUnknownChunkList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public StagedAliasEntry searchByStagedResId(int stagedResId){
|
public StagedAliasEntry searchByStagedResId(int stagedResId){
|
||||||
@ -142,8 +143,8 @@ package com.reandroid.arsc.chunk;
|
|||||||
return getHeaderBlock().getPackageId().get();
|
return getHeaderBlock().getPackageId().get();
|
||||||
}
|
}
|
||||||
public void setId(byte id){
|
public void setId(byte id){
|
||||||
setId(0xff & id);
|
setId(0xff & id);
|
||||||
}
|
}
|
||||||
public void setId(int id){
|
public void setId(int id){
|
||||||
getHeaderBlock().getPackageId().set(id);
|
getHeaderBlock().getPackageId().set(id);
|
||||||
}
|
}
|
||||||
@ -175,7 +176,7 @@ package com.reandroid.arsc.chunk;
|
|||||||
return getTableBlock();
|
return getTableBlock();
|
||||||
}
|
}
|
||||||
public PackageBody getPackageBody() {
|
public PackageBody getPackageBody() {
|
||||||
return mBody;
|
return mBody;
|
||||||
}
|
}
|
||||||
public SpecTypePairArray getSpecTypePairArray(){
|
public SpecTypePairArray getSpecTypePairArray(){
|
||||||
return mBody.getSpecTypePairArray();
|
return mBody.getSpecTypePairArray();
|
||||||
@ -213,6 +214,13 @@ package com.reandroid.arsc.chunk;
|
|||||||
public TypeBlock getTypeBlock(byte typeId, String qualifiers){
|
public TypeBlock getTypeBlock(byte typeId, String qualifiers){
|
||||||
return getSpecTypePairArray().getTypeBlock(typeId, qualifiers);
|
return getSpecTypePairArray().getTypeBlock(typeId, qualifiers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isDisableEntryGroupMap() {
|
||||||
|
return disableEntryGroupMap;
|
||||||
|
}
|
||||||
|
public void setDisableEntryGroupMap(boolean disable) {
|
||||||
|
this.disableEntryGroupMap = disable;
|
||||||
|
}
|
||||||
public Map<Integer, EntryGroup> getEntriesGroupMap(){
|
public Map<Integer, EntryGroup> getEntriesGroupMap(){
|
||||||
return mEntriesGroup;
|
return mEntriesGroup;
|
||||||
}
|
}
|
||||||
@ -240,35 +248,36 @@ package com.reandroid.arsc.chunk;
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
public void updateEntry(Entry entry){
|
public void updateEntry(Entry entry){
|
||||||
if(entry ==null|| entry.isNull()){
|
if(isDisableEntryGroupMap()){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
updateEntryGroup(entry);
|
if(entry == null || entry.isNull()){
|
||||||
}
|
|
||||||
public void removeEntryGroup(Entry entry){
|
|
||||||
if(entry ==null){
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int id= entry.getResourceId();
|
int resourceId = entry.getResourceId();
|
||||||
EntryGroup group=getEntriesGroupMap().get(id);
|
Map<Integer, EntryGroup> map = getEntriesGroupMap();
|
||||||
if(group==null){
|
EntryGroup group = map.get(resourceId);
|
||||||
return;
|
if(group == null){
|
||||||
}
|
group = new EntryGroup(resourceId);
|
||||||
group.remove(entry);
|
map.put(resourceId, group);
|
||||||
if(group.size()==0){
|
|
||||||
getEntriesGroupMap().remove(id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void updateEntryGroup(Entry entry){
|
|
||||||
int resId= entry.getResourceId();
|
|
||||||
EntryGroup group=getEntriesGroupMap().get(resId);
|
|
||||||
if(group==null){
|
|
||||||
group=new EntryGroup(resId);
|
|
||||||
getEntriesGroupMap().put(resId, group);
|
|
||||||
}
|
}
|
||||||
group.add(entry);
|
group.add(entry);
|
||||||
}
|
}
|
||||||
|
public void removeEntryGroup(Entry entry){
|
||||||
|
if(entry == null){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int resourceId = entry.getResourceId();
|
||||||
|
Map<Integer, EntryGroup> map = getEntriesGroupMap();
|
||||||
|
EntryGroup group = map.get(resourceId);
|
||||||
|
if(group == null){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
group.remove(entry);
|
||||||
|
if(group.size() == 0){
|
||||||
|
map.remove(resourceId);
|
||||||
|
}
|
||||||
|
}
|
||||||
public List<Entry> listEntries(byte typeId, int entryId){
|
public List<Entry> listEntries(byte typeId, int entryId){
|
||||||
List<Entry> results=new ArrayList<>();
|
List<Entry> results=new ArrayList<>();
|
||||||
for(SpecTypePair pair:listSpecTypePair(typeId)){
|
for(SpecTypePair pair:listSpecTypePair(typeId)){
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2022 github.com/REAndroid
|
* Copyright (C) 2022 github.com/REAndroid
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package com.reandroid.arsc.chunk;
|
package com.reandroid.arsc.chunk;
|
||||||
|
|
||||||
import com.reandroid.arsc.ApkFile;
|
import com.reandroid.arsc.ApkFile;
|
||||||
@ -35,21 +35,34 @@ import java.io.*;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
public class TableBlock extends Chunk<TableHeader>
|
public class TableBlock extends Chunk<TableHeader>
|
||||||
implements MainChunk, JSONConvert<JSONObject>, EntryStore {
|
implements MainChunk, JSONConvert<JSONObject>, EntryStore {
|
||||||
private final TableStringPool mTableStringPool;
|
private final TableStringPool mTableStringPool;
|
||||||
private final PackageArray mPackageArray;
|
private final PackageArray mPackageArray;
|
||||||
private final List<TableBlock> mFrameWorks=new ArrayList<>();
|
private final List<TableBlock> mFrameWorks;
|
||||||
private ApkFile mApkFile;
|
private ApkFile mApkFile;
|
||||||
private ReferenceResolver referenceResolver;
|
private ReferenceResolver referenceResolver;
|
||||||
|
private boolean disableEntryGroupMap;
|
||||||
|
|
||||||
public TableBlock() {
|
public TableBlock() {
|
||||||
super(new TableHeader(), 2);
|
super(new TableHeader(), 2);
|
||||||
TableHeader header = getHeaderBlock();
|
TableHeader header = getHeaderBlock();
|
||||||
this.mTableStringPool=new TableStringPool(true);
|
this.mTableStringPool = new TableStringPool(true);
|
||||||
this.mPackageArray=new PackageArray(header.getPackageCount());
|
this.mPackageArray = new PackageArray(header.getPackageCount());
|
||||||
|
this.mFrameWorks = new ArrayList<>();
|
||||||
addChild(mTableStringPool);
|
addChild(mTableStringPool);
|
||||||
addChild(mPackageArray);
|
addChild(mPackageArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isDisableEntryGroupMap() {
|
||||||
|
return disableEntryGroupMap;
|
||||||
|
}
|
||||||
|
public void setDisableEntryGroupMap(boolean disable) {
|
||||||
|
this.disableEntryGroupMap = disable;
|
||||||
|
for(PackageBlock packageBlock : listPackages()){
|
||||||
|
packageBlock.setDisableEntryGroupMap(disable);
|
||||||
|
}
|
||||||
|
}
|
||||||
public List<Entry> resolveReference(int referenceId){
|
public List<Entry> resolveReference(int referenceId){
|
||||||
return resolveReference(referenceId, null);
|
return resolveReference(referenceId, null);
|
||||||
}
|
}
|
||||||
@ -83,7 +96,7 @@ import java.util.function.Predicate;
|
|||||||
return getPackageArray().pickOne();
|
return getPackageArray().pickOne();
|
||||||
}
|
}
|
||||||
public PackageBlock pickOne(int packageId){
|
public PackageBlock pickOne(int packageId){
|
||||||
return getPackageArray().pickOne(packageId);
|
return getPackageArray().pickOne(packageId);
|
||||||
}
|
}
|
||||||
public void sortPackages(){
|
public void sortPackages(){
|
||||||
getPackageArray().sort();
|
getPackageArray().sort();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user