TableUtil.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /** 由编辑器生成
  2. * 不要修改
  3. * 数据表缓存 */
  4. let data: Map<string, any> = new Map();
  5. let tables: Map<any, Map<number, any>> = new Map();
  6. export class TableUtil {
  7. /**获取一个表集*/
  8. static getTables<T>(type: (new () => T), ids: number[] | number): T[] {
  9. let map = tables.get(type);
  10. if (!map) {
  11. map = new Map<number, T>();
  12. tables.set(type, map);
  13. }
  14. let ts: T[] = [];
  15. if (ids instanceof Array) {
  16. for (let i: number = 0; i < ids.length; i++) {
  17. let t = map.get(ids[i]);
  18. if (!t) {
  19. t = new type();
  20. t.init(ids[i]);
  21. map.set(ids[i], t);
  22. }
  23. ts.push(t);
  24. }
  25. }
  26. else if (typeof ids === "number") {
  27. for (let i: number = 0; i < ids; i++) {
  28. let t = map.get(i);
  29. if (!t) {
  30. t = new type();
  31. t.init(i);
  32. map.set(i, t);
  33. }
  34. ts.push(t);
  35. }
  36. }
  37. return ts;
  38. }
  39. /**获取一个数据表id的数据
  40. * @param type 表类型
  41. * @param id 主key
  42. */
  43. static getTable<T>(type: (new () => T), id: number): T {
  44. let map = tables.get(type);
  45. if (!map) {
  46. map = new Map<number, T>();
  47. tables.set(type, map);
  48. }
  49. let t = map.get(id);
  50. if (!t) {
  51. t = new type();
  52. t.init(id);
  53. map.set(id, t);
  54. }
  55. return t;
  56. }
  57. /**
  58. * 通知资源名从缓存中获取一个Json数据表 没有初始化
  59. * @param name 资源名
  60. */
  61. static get(name: string): any {
  62. if (data.has(name)) {
  63. return data.get(name);
  64. } else {
  65. console.error("没有加载的资源:" + name);
  66. return null;
  67. }
  68. }
  69. static set(name: string, json: string): void {
  70. data.set(name, json);
  71. }
  72. static has(name: string): boolean {
  73. return data.has(name);
  74. }
  75. static delete(name: string): void {
  76. data.delete(name);
  77. }
  78. static clean(): void {
  79. data.clear();
  80. tables.clear();
  81. }
  82. }