blob: 45e4d6af09589f73388f8d687e3a1f278abd8900 [file] [log] [blame]
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.sdklib.devices;
import com.android.annotations.NonNull;
import java.util.Collection;
import java.util.EnumSet;
import java.util.LinkedHashSet;
import java.util.Set;
public class Software {
private int mMinSdkLevel = 0;
private int mMaxSdkLevel = Integer.MAX_VALUE;
private boolean mLiveWallpaperSupport;
private Set<BluetoothProfile> mBluetoothProfiles = EnumSet.noneOf(BluetoothProfile.class);
private String mGlVersion;
private Set<String> mGlExtensions = new LinkedHashSet<String>();
private boolean mStatusBar;
public int getMinSdkLevel() {
return mMinSdkLevel;
}
public void setMinSdkLevel(int sdkLevel) {
mMinSdkLevel = sdkLevel;
}
public int getMaxSdkLevel() {
return mMaxSdkLevel;
}
public void setMaxSdkLevel(int sdkLevel) {
mMaxSdkLevel = sdkLevel;
}
public boolean hasLiveWallpaperSupport() {
return mLiveWallpaperSupport;
}
public void setLiveWallpaperSupport(boolean liveWallpaperSupport) {
mLiveWallpaperSupport = liveWallpaperSupport;
}
@NonNull
public Set<BluetoothProfile> getBluetoothProfiles() {
return mBluetoothProfiles;
}
public void addBluetoothProfile(BluetoothProfile bp) {
mBluetoothProfiles.add(bp);
}
public void addAllBluetoothProfiles(Collection<BluetoothProfile> bps) {
mBluetoothProfiles.addAll(bps);
}
public String getGlVersion() {
return mGlVersion;
}
public void setGlVersion(String version) {
mGlVersion = version;
}
@NonNull
public Set<String> getGlExtensions() {
return mGlExtensions;
}
public void addGlExtension(String extension) {
mGlExtensions.add(extension);
}
public void addAllGlExtensions(Collection<String> extensions) {
mGlExtensions.addAll(extensions);
}
public void setStatusBar(boolean hasBar) {
mStatusBar = hasBar;
}
public boolean hasStatusBar() {
return mStatusBar;
}
public Software deepCopy() {
Software s = new Software();
s.setMinSdkLevel(getMinSdkLevel());
s.setMaxSdkLevel(getMaxSdkLevel());
s.setLiveWallpaperSupport(hasLiveWallpaperSupport());
s.addAllBluetoothProfiles(getBluetoothProfiles());
s.setGlVersion(getGlVersion());
s.addAllGlExtensions(getGlExtensions());
s.setStatusBar(hasStatusBar());
return s;
}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof Software)) {
return false;
}
Software sw = (Software) o;
return mMinSdkLevel == sw.getMinSdkLevel()
&& mMaxSdkLevel == sw.getMaxSdkLevel()
&& mLiveWallpaperSupport == sw.hasLiveWallpaperSupport()
&& mBluetoothProfiles.equals(sw.getBluetoothProfiles())
&& mGlVersion.equals(sw.getGlVersion())
&& mGlExtensions.equals(sw.getGlExtensions())
&& mStatusBar == sw.hasStatusBar();
}
@Override
/** A stable hash across JVM instances */
public int hashCode() {
int hash = 17;
hash = 31 * hash + mMinSdkLevel;
hash = 31 * hash + mMaxSdkLevel;
hash = 31 * hash + (mLiveWallpaperSupport ? 1 : 0);
for (BluetoothProfile bp : mBluetoothProfiles) {
hash = 31 * hash + bp.ordinal();
}
if (mGlVersion != null) {
hash = 31 * hash + mGlVersion.hashCode();
}
for (String glExtension : mGlExtensions) {
if (glExtension != null) {
hash = 31 * hash + glExtension.hashCode();
}
}
hash = 31 * hash + (mStatusBar ? 1 : 0);
return hash;
}
}