blob: aa4c75a0be801d3546237eb15f13b4e72ac9492c [file] [log] [blame]
/*
* Copyright (C) 2021 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.server.tare;
import static android.app.tare.EconomyManager.CAKE_IN_ARC;
import android.annotation.NonNull;
import com.android.internal.annotations.VisibleForTesting;
import java.time.Clock;
class TareUtils {
@VisibleForTesting
static Clock sSystemClock = Clock.systemUTC();
static long getCurrentTimeMillis() {
return sSystemClock.millis();
}
static int cakeToArc(long cakes) {
return (int) (cakes / CAKE_IN_ARC);
}
@NonNull
static String cakeToString(long cakes) {
if (cakes == 0) {
return "0 ARCs";
}
final long sub = cakes % CAKE_IN_ARC;
final long arcs = cakeToArc(cakes);
if (arcs == 0) {
return sub == 1
? sub + " cake"
: sub + " cakes";
}
StringBuilder sb = new StringBuilder();
sb.append(arcs);
if (sub != 0) {
sb.append(".").append(String.format("%03d", Math.abs(sub) / (CAKE_IN_ARC / 1000)));
}
sb.append(" ARC");
if (arcs != 1 || sub != 0) {
sb.append("s");
}
return sb.toString();
}
/** Returns a standardized format for printing userId+pkgName combinations. */
@NonNull
static String appToString(int userId, String pkgName) {
return "<" + userId + ">" + pkgName;
}
}