1 | /* |
2 | * Copyright 2004-2014 H2 Group. Multiple-Licensed under the MPL 2.0, |
3 | * and the EPL 1.0 (http://h2database.com/html/license.html). |
4 | * Initial Developer: H2 Group |
5 | */ |
6 | package org.h2.result; |
7 | |
8 | import org.h2.engine.Constants; |
9 | import org.h2.util.StatementBuilder; |
10 | import org.h2.value.Value; |
11 | |
12 | /** |
13 | * Represents a simple row without state. |
14 | */ |
15 | public class SimpleRow implements SearchRow { |
16 | |
17 | private long key; |
18 | private int version; |
19 | private final Value[] data; |
20 | private int memory; |
21 | |
22 | public SimpleRow(Value[] data) { |
23 | this.data = data; |
24 | } |
25 | |
26 | @Override |
27 | public int getColumnCount() { |
28 | return data.length; |
29 | } |
30 | |
31 | @Override |
32 | public long getKey() { |
33 | return key; |
34 | } |
35 | |
36 | @Override |
37 | public void setKey(long key) { |
38 | this.key = key; |
39 | } |
40 | |
41 | @Override |
42 | public void setKeyAndVersion(SearchRow row) { |
43 | key = row.getKey(); |
44 | version = row.getVersion(); |
45 | } |
46 | |
47 | @Override |
48 | public int getVersion() { |
49 | return version; |
50 | } |
51 | |
52 | @Override |
53 | public void setValue(int i, Value v) { |
54 | data[i] = v; |
55 | } |
56 | |
57 | @Override |
58 | public Value getValue(int i) { |
59 | return data[i]; |
60 | } |
61 | |
62 | @Override |
63 | public String toString() { |
64 | StatementBuilder buff = new StatementBuilder("( /* key:"); |
65 | buff.append(getKey()); |
66 | if (version != 0) { |
67 | buff.append(" v:" + version); |
68 | } |
69 | buff.append(" */ "); |
70 | for (Value v : data) { |
71 | buff.appendExceptFirst(", "); |
72 | buff.append(v == null ? "null" : v.getTraceSQL()); |
73 | } |
74 | return buff.append(')').toString(); |
75 | } |
76 | |
77 | @Override |
78 | public int getMemory() { |
79 | if (memory == 0) { |
80 | int len = data.length; |
81 | memory = Constants.MEMORY_OBJECT + len * Constants.MEMORY_POINTER; |
82 | for (int i = 0; i < len; i++) { |
83 | Value v = data[i]; |
84 | if (v != null) { |
85 | memory += v.getMemory(); |
86 | } |
87 | } |
88 | } |
89 | return memory; |
90 | } |
91 | |
92 | } |